[ion/storage] Added the "ctrl-z" system everywhere

This commit is contained in:
Laury
2022-02-19 12:09:02 +01:00
parent f3d632c462
commit af5f9ea578
13 changed files with 128 additions and 28 deletions

View File

@@ -23,7 +23,6 @@ public:
* not defined. We thus have to keep both methods. */
virtual bool isDefined();
virtual bool isEmpty();
virtual bool shouldBeClearedBeforeRemove() { return !isEmpty(); }
/* tidy is responsible to tidy the whole model whereas tidyExpressionModel
* tidies only the members associated with the ExpressionModel. In
* ExpressionModel, tidy and tidyExpressionModel trigger the same

View File

@@ -184,18 +184,19 @@ bool ExpressionModelListController::handleEventOnExpression(Ion::Events::Event e
}
if (event == Ion::Events::Backspace && !isAddEmptyRow(selectedRow())) {
Ion::Storage::Record record = modelStore()->recordAtIndex(modelIndexForRow(selectedRow()));
ExpiringPointer<ExpressionModelHandle> model = modelStore()->modelForRecord(record);
if (model->shouldBeClearedBeforeRemove()) {
reinitSelectedExpression(model);
} else {
if (removeModelRow(record)) {
int newSelectedRow = selectedRow() >= numberOfExpressionRows() ? numberOfExpressionRows()-1 : selectedRow();
selectCellAtLocation(selectedColumn(), newSelectedRow);
selectableTableView()->reloadData();
}
ExpiringPointer<ExpressionModelHandle> model = modelStore()->modelForRecord(record);
if (removeModelRow(record)) {
int newSelectedRow = selectedRow() >= numberOfExpressionRows() ? numberOfExpressionRows()-1 : selectedRow();
selectCellAtLocation(selectedColumn(), newSelectedRow);
selectableTableView()->reloadData();
}
return true;
}
if (event == Ion::Events::ShiftBack) {
Ion::Storage::sharedStorage()->reinsertTrash(recordExtension());
selectableTableView()->reloadData();
return true;
}
if ((event.hasText() || event == Ion::Events::XNT || event == Ion::Events::Paste || event == Ion::Events::Toolbox || event == Ion::Events::Var)
&& !isAddEmptyRow(selectedRow())) {
editExpression(event);

View File

@@ -11,6 +11,7 @@ class ExpressionModelListController : public ViewController, public SelectableTa
public:
ExpressionModelListController(Responder * parentResponder, I18n::Message text);
protected:
virtual const char * recordExtension() const = 0;
static constexpr KDCoordinate k_expressionMargin = 5;
// SelectableTableViewDelegate
void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection) override;

View File

@@ -200,6 +200,11 @@ bool FunctionListController::handleEvent(Ion::Events::Event event) {
}
return true;
}
if (event == Ion::Events::ShiftBack) {
Ion::Storage::sharedStorage()->reinsertTrash(recordExtension());
selectableTableView()->reloadData();
return true;
}
return false;
}

View File

@@ -7,6 +7,7 @@
#include "list_parameter_controller.h"
#include "expression_model_list_controller.h"
#include <apps/i18n.h>
#include <ion/storage.h>
namespace Shared {