mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[ion/storage] Added the "ctrl-z" system everywhere
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user