[shared] Factorize 'storageDidChangeForRecord' in StorageFunctionApp

This commit is contained in:
Émilie Feral
2019-02-28 14:47:37 +01:00
parent 4a56e8c127
commit 7fdc8a7c1b
4 changed files with 9 additions and 15 deletions

View File

@@ -31,16 +31,6 @@ App * App::Snapshot::unpack(Container * container) {
return new (container->currentAppBuffer()) App(container, this);
}
void App::Snapshot::reset() {
StorageFunctionApp::Snapshot::reset();
*(modelVersion()) = 0;
*(rangeVersion()) = 0;
}
void App::Snapshot::storageDidChangeForRecord(const Ion::Storage::Record record) {
m_functionStore.storageDidChangeForRecord(record);
}
App::Descriptor * App::Snapshot::descriptor() {
static Descriptor descriptor;
return &descriptor;

View File

@@ -22,10 +22,8 @@ public:
public:
Snapshot();
App * unpack(Container * container) override;
void reset() override;
void storageDidChangeForRecord(const Ion::Storage::Record record) override;
Descriptor * descriptor() override;
StorageCartesianFunctionStore * functionStore();
StorageCartesianFunctionStore * functionStore() override;
Shared::InteractiveCurveViewRange * graphRange();
private:
void tidy() override;
@@ -35,7 +33,7 @@ public:
InputViewController * inputViewController() override;
char XNT() override;
NestedMenuController * variableBoxForInputEventHandler(InputEventHandler * textInput) override;
StorageCartesianFunctionStore * functionStore() override { return static_cast<Snapshot *>(snapshot())->functionStore(); }
StorageCartesianFunctionStore * functionStore() override { return static_cast<StorageCartesianFunctionStore *>(Shared::StorageFunctionApp::functionStore()); }
private:
App(Container * container, Snapshot * snapshot);
StorageListController m_listController;

View File

@@ -28,6 +28,10 @@ void StorageFunctionApp::Snapshot::reset() {
setActiveTab(0);
}
void StorageFunctionApp::Snapshot::storageDidChangeForRecord(const Ion::Storage::Record record) {
functionStore()->storageDidChangeForRecord(record);
}
void StorageFunctionApp::willBecomeInactive() {
if (m_modalViewController.isDisplayingModal()) {
m_modalViewController.dismissModalViewController();

View File

@@ -19,9 +19,11 @@ public:
uint32_t * modelVersion() { return &m_modelVersion; }
uint32_t * rangeVersion() { return &m_rangeVersion; }
Poincare::Preferences::AngleUnit * angleUnitVersion() { return &m_angleUnitVersion; }
virtual StorageFunctionStore * functionStore() = 0;
Interval * interval() { return &m_interval; }
int * indexFunctionSelectedByCursor() { return &m_indexFunctionSelectedByCursor; }
void reset() override;
void storageDidChangeForRecord(const Ion::Storage::Record record) override;
protected:
CurveViewCursor m_cursor;
Interval m_interval;
@@ -32,7 +34,7 @@ public:
Poincare::Preferences::AngleUnit m_angleUnitVersion;
};
virtual ~StorageFunctionApp() = default;
virtual StorageFunctionStore * functionStore() = 0;
virtual StorageFunctionStore * functionStore() { return static_cast<StorageFunctionApp::Snapshot *>(snapshot())->functionStore(); }
virtual InputViewController * inputViewController() = 0;
void willBecomeInactive() override;