From a565cb32b9198436cb4a7bc3900fa501a49c3508 Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Tue, 3 Sep 2019 16:33:04 +0200 Subject: [PATCH] [apps] Move interval from FunctionApp to derived classes --- apps/graph/app.cpp | 5 +++++ apps/graph/app.h | 8 ++++++++ apps/sequence/app.cpp | 5 +++++ apps/sequence/app.h | 8 ++++++++ apps/shared/function_app.cpp | 2 -- apps/shared/function_app.h | 4 ---- 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/apps/graph/app.cpp b/apps/graph/app.cpp index a1db97be7..35ffbb4f0 100644 --- a/apps/graph/app.cpp +++ b/apps/graph/app.cpp @@ -31,6 +31,11 @@ App * App::Snapshot::unpack(Container * container) { return new (container->currentAppBuffer()) App(this); } +void App::Snapshot::reset() { + Shared::FunctionApp::Snapshot::reset(); + m_interval.reset(); +} + App::Descriptor * App::Snapshot::descriptor() { static Descriptor descriptor; return &descriptor; diff --git a/apps/graph/app.h b/apps/graph/app.h index 3b462f94f..9aabd80e9 100644 --- a/apps/graph/app.h +++ b/apps/graph/app.h @@ -7,6 +7,7 @@ #include "list/list_controller.h" #include "values/values_controller.h" #include "../shared/function_app.h" +#include "../shared/interval.h" namespace Graph { @@ -22,20 +23,27 @@ public: public: Snapshot(); App * unpack(Container * container) override; + void reset() override; Descriptor * descriptor() override; CartesianFunctionStore * functionStore() override; Shared::InteractiveCurveViewRange * graphRange(); + Shared::Interval * interval() { return &m_interval; } private: void tidy() override; CartesianFunctionStore m_functionStore; Shared::InteractiveCurveViewRange m_graphRange; + Shared::Interval m_interval; }; static App * app() { return static_cast(Container::activeApp()); } + Snapshot * snapshot() const { + return static_cast(::App::snapshot()); + } CodePoint XNT() override; NestedMenuController * variableBoxForInputEventHandler(InputEventHandler * textInput) override; CartesianFunctionStore * functionStore() override { return static_cast(Shared::FunctionApp::functionStore()); } + Shared::Interval * interval() { return snapshot()->interval(); } ValuesController * valuesController() override { return &m_valuesController; } diff --git a/apps/sequence/app.cpp b/apps/sequence/app.cpp index 286346ea6..383348311 100644 --- a/apps/sequence/app.cpp +++ b/apps/sequence/app.cpp @@ -29,6 +29,11 @@ App * App::Snapshot::unpack(Container * container) { return new (container->currentAppBuffer()) App(this); } +void App::Snapshot::reset() { + Shared::FunctionApp::Snapshot::reset(); + m_interval.reset(); +} + App::Descriptor * App::Snapshot::descriptor() { static Descriptor descriptor; return &descriptor; diff --git a/apps/sequence/app.h b/apps/sequence/app.h index e16d40a53..b1b9f108e 100644 --- a/apps/sequence/app.h +++ b/apps/sequence/app.h @@ -9,6 +9,7 @@ #include "list/list_controller.h" #include "values/values_controller.h" #include "../shared/function_app.h" +#include "../shared/interval.h" namespace Sequence { @@ -24,22 +25,29 @@ public: public: Snapshot(); App * unpack(Container * container) override; + void reset() override; Descriptor * descriptor() override; SequenceStore * functionStore() override { return &m_sequenceStore; } CurveViewRange * graphRange() { return &m_graphRange; } + Shared::Interval * interval() { return &m_interval; } private: void tidy() override; SequenceStore m_sequenceStore; CurveViewRange m_graphRange; + Shared::Interval m_interval; }; static App * app() { return static_cast(Container::activeApp()); } + Snapshot * snapshot() const { + return static_cast(::App::snapshot()); + } // TODO: override variableBoxForInputEventHandler to lock sequence in the variable box once they appear there // NestedMenuController * variableBoxForInputEventHandler(InputEventHandler * textInput) override; CodePoint XNT() override { return 'n'; } SequenceContext * localContext() override; SequenceStore * functionStore() override { return static_cast(Shared::FunctionApp::functionStore()); } + Shared::Interval * interval() { return snapshot()->interval(); } ValuesController * valuesController() override { return &m_valuesController; } diff --git a/apps/shared/function_app.cpp b/apps/shared/function_app.cpp index 41efe2b44..2b746e3e2 100644 --- a/apps/shared/function_app.cpp +++ b/apps/shared/function_app.cpp @@ -6,7 +6,6 @@ namespace Shared { FunctionApp::Snapshot::Snapshot() : m_cursor(), - m_interval(), m_indexFunctionSelectedByCursor(0), m_modelVersion(0), m_rangeVersion(0), @@ -15,7 +14,6 @@ FunctionApp::Snapshot::Snapshot() : } void FunctionApp::Snapshot::reset() { - m_interval.reset(); m_indexFunctionSelectedByCursor = 0; m_modelVersion = 0; m_rangeVersion = 0; diff --git a/apps/shared/function_app.h b/apps/shared/function_app.h index f13a1a9fc..ffec00c31 100644 --- a/apps/shared/function_app.h +++ b/apps/shared/function_app.h @@ -4,7 +4,6 @@ #include "expression_field_delegate_app.h" #include "function_store.h" #include "curve_view_cursor.h" -#include "interval.h" #include "values_controller.h" namespace Shared { @@ -19,13 +18,11 @@ public: uint32_t * rangeVersion() { return &m_rangeVersion; } Poincare::Preferences::AngleUnit * angleUnitVersion() { return &m_angleUnitVersion; } virtual FunctionStore * 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; private: int m_indexFunctionSelectedByCursor; uint32_t m_modelVersion; @@ -40,7 +37,6 @@ public: return static_cast(::App::snapshot()); } virtual FunctionStore * functionStore() { return snapshot()->functionStore(); } - Interval * interval() { return snapshot()->interval(); } virtual ValuesController * valuesController() = 0; virtual InputViewController * inputViewController() = 0; void willBecomeInactive() override;