diff --git a/apps/graph/app.cpp b/apps/graph/app.cpp index 22821ee8b..94dd4b14f 100644 --- a/apps/graph/app.cpp +++ b/apps/graph/app.cpp @@ -11,15 +11,15 @@ App::App(Container * container, Context * context) : m_functionStore(FunctionStore()), m_xContext(VariableContext('x', context)), m_listController(ListController(&m_listHeader, &m_functionStore, &m_listHeader)), - m_listHeader(HeaderViewController(nullptr, &m_listController, &m_listController)), + m_listHeader(HeaderViewController(&m_listStackViewController, &m_listController, &m_listController)), m_listStackViewController(StackViewController(&m_tabViewController, &m_listHeader)), m_graphController(GraphController(&m_graphAlternateEmptyViewController, &m_functionStore, &m_graphHeader)), m_graphAlternateEmptyViewController(AlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController)), - m_graphHeader(HeaderViewController(nullptr, &m_graphAlternateEmptyViewController, &m_graphController)), + m_graphHeader(HeaderViewController(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController)), m_graphStackViewController(StackViewController(&m_tabViewController, &m_graphHeader)), m_valuesController(&m_valuesAlternateEmptyViewController, &m_functionStore, &m_valuesHeader), m_valuesAlternateEmptyViewController(AlternateEmptyViewController(&m_valuesHeader, &m_valuesController, &m_valuesController)), - m_valuesHeader(HeaderViewController(nullptr, &m_valuesAlternateEmptyViewController, &m_valuesController)), + m_valuesHeader(HeaderViewController(&m_valuesStackViewController, &m_valuesAlternateEmptyViewController, &m_valuesController)), m_valuesStackViewController(StackViewController(&m_tabViewController, &m_valuesHeader)), m_tabViewController(&m_inputViewController, &m_listStackViewController, &m_graphStackViewController, &m_valuesStackViewController), m_inputViewController(&m_modalViewController, &m_tabViewController, this) diff --git a/apps/graph/graph/graph_controller.cpp b/apps/graph/graph/graph_controller.cpp index 1b25de9df..78a6bb30f 100644 --- a/apps/graph/graph/graph_controller.cpp +++ b/apps/graph/graph/graph_controller.cpp @@ -122,6 +122,9 @@ void GraphController::reloadBannerView() { legend = "00(x) = "; legendLength = strlen(legend); strlcpy(buffer, legend, legendLength+1); + if (m_functionStore->numberOfActiveFunctions() == 0) { + return; + } Function * f = m_functionStore->activeFunctionAtIndex(m_indexFunctionSelectedByCursor); buffer[1] = f->name()[0]; Complex::convertFloatToText(m_cursor.y(), buffer+legendLength, Complex::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits, graphApp->container()->preferences()->displayMode()); diff --git a/apps/graph/values/values_controller.cpp b/apps/graph/values/values_controller.cpp index cbdd22829..8f6a24be7 100644 --- a/apps/graph/values/values_controller.cpp +++ b/apps/graph/values/values_controller.cpp @@ -27,8 +27,7 @@ ValuesController::ValuesController(Responder * parentResponder, FunctionStore * ValuesController * valuesController = (ValuesController *) context; StackViewController * stack = ((StackViewController *)valuesController->stackController()); stack->push(valuesController->intervalParameterController()); - }, this), KDText::FontSize::Small)), - m_displayModeVersion(Expression::FloatDisplayMode::Auto) + }, this), KDText::FontSize::Small)) { m_interval.setStart(0); m_interval.setEnd(10); @@ -39,16 +38,6 @@ const char * ValuesController::title() const { return "Valeurs"; } -View * ValuesController::view() { - App * graphApp = (App *)app(); - Expression::FloatDisplayMode FloatDisplayMode = graphApp->container()->preferences()->displayMode(); - if (FloatDisplayMode != m_displayModeVersion) { - m_selectableTableView.reloadData(); - m_displayModeVersion = FloatDisplayMode; - } - return EditableCellTableViewController::view(); -} - Interval * ValuesController::interval() { return &m_interval; } @@ -297,6 +286,10 @@ int ValuesController::activeColumn() { return m_selectableTableView.selectedColumn(); } +void ValuesController::viewWillAppear() { + m_selectableTableView.reloadData(); +} + Function * ValuesController::functionAtColumn(int i) { assert(i > 0); int index = 1; diff --git a/apps/graph/values/values_controller.h b/apps/graph/values/values_controller.h index ee78ea58c..7a6d1e34d 100644 --- a/apps/graph/values/values_controller.h +++ b/apps/graph/values/values_controller.h @@ -17,7 +17,6 @@ class ValuesController : public Shared::EditableCellTableViewController, public public: ValuesController(Responder * parentResponder, FunctionStore * functionStore, HeaderViewController * header); const char * title() const override; - View * view() override; Interval * interval(); bool handleEvent(Ion::Events::Event event) override; void didBecomeFirstResponder() override; @@ -38,6 +37,7 @@ public: void selectCellAtLocation(int i, int j); int activeRow(); int activeColumn(); + void viewWillAppear() override; static constexpr KDCoordinate k_topMargin = 10; static constexpr KDCoordinate k_bottomMargin = 5; static constexpr KDCoordinate k_leftMargin = 1; @@ -72,7 +72,6 @@ private: FunctionParameterController m_functionParameterController; DerivativeParameterController m_derivativeParameterController; Button m_setIntervalButton; - Poincare::Expression::FloatDisplayMode m_displayModeVersion; }; } diff --git a/apps/regression/app.cpp b/apps/regression/app.cpp index 38854ce75..cd6101fcf 100644 --- a/apps/regression/app.cpp +++ b/apps/regression/app.cpp @@ -13,10 +13,10 @@ App::App(Container * container) : m_calculationHeader(HeaderViewController(&m_tabViewController, &m_calculationAlternateEmptyViewController, &m_calculationController)), m_graphController(GraphController(&m_graphAlternateEmptyViewController, &m_graphHeader, &m_store)), m_graphAlternateEmptyViewController(AlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController)), - m_graphHeader(HeaderViewController(nullptr, &m_graphAlternateEmptyViewController, &m_graphController)), + m_graphHeader(HeaderViewController(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController)), m_graphStackViewController(StackViewController(&m_tabViewController, &m_graphHeader)), m_storeController(StoreController(&m_storeHeader, &m_store, &m_storeHeader)), - m_storeHeader(HeaderViewController(nullptr, &m_storeController, &m_storeController)), + m_storeHeader(HeaderViewController(&m_storeStackViewController, &m_storeController, &m_storeController)), m_storeStackViewController(StackViewController(&m_tabViewController, &m_storeHeader)), m_tabViewController(&m_modalViewController, &m_storeStackViewController, &m_graphStackViewController, &m_calculationHeader) { diff --git a/apps/shared/interactive_curve_view_controller.cpp b/apps/shared/interactive_curve_view_controller.cpp index 63d99997b..ec0e11e33 100644 --- a/apps/shared/interactive_curve_view_controller.cpp +++ b/apps/shared/interactive_curve_view_controller.cpp @@ -1,8 +1,7 @@ #include "interactive_curve_view_controller.h" #include "text_field_delegate_app.h" -#include "../apps_container.h" -#include #include +#include using namespace Poincare; @@ -29,8 +28,7 @@ InteractiveCurveViewController::InteractiveCurveViewController(Responder * paren InteractiveCurveViewController * graphController = (InteractiveCurveViewController *) context; StackViewController * stack = graphController->stackController(); stack->push(graphController->initialisationParameterController()); - }, this), KDText::FontSize::Small), - m_displayModeVersion(Expression::FloatDisplayMode::Auto) + }, this), KDText::FontSize::Small) { } @@ -39,13 +37,6 @@ const char * InteractiveCurveViewController::title() const { } View * InteractiveCurveViewController::view() { - AppsContainer * myContainer = ((TextFieldDelegateApp *)app())->container(); - Expression::FloatDisplayMode FloatDisplayMode = myContainer->preferences()->displayMode(); - if (FloatDisplayMode != m_displayModeVersion) { - reloadBannerView(); - curveView()->reload(); - m_displayModeVersion = FloatDisplayMode; - } return curveView(); } @@ -149,6 +140,11 @@ Responder * InteractiveCurveViewController::defaultController() { return tabController(); } +void InteractiveCurveViewController::viewWillAppear() { + reloadBannerView(); + curveView()->reload(); +} + Responder * InteractiveCurveViewController::tabController() const{ return (parentResponder()->parentResponder()->parentResponder()->parentResponder()); } diff --git a/apps/shared/interactive_curve_view_controller.h b/apps/shared/interactive_curve_view_controller.h index 74f186792..df2b084f1 100644 --- a/apps/shared/interactive_curve_view_controller.h +++ b/apps/shared/interactive_curve_view_controller.h @@ -27,6 +27,8 @@ public: Button * buttonAtIndex(int index) override; Responder * defaultController() override; + + void viewWillAppear() override; protected: constexpr static float k_numberOfCursorStepsInGradUnit = 5.0f; virtual BannerView * bannerView() = 0; @@ -55,7 +57,6 @@ private: Button m_rangeButton; Button m_zoomButton; Button m_defaultInitialisationButton; - Poincare::Expression::FloatDisplayMode m_displayModeVersion; }; } diff --git a/apps/statistics/app.cpp b/apps/statistics/app.cpp index 37e5189d6..ad15d2ef7 100644 --- a/apps/statistics/app.cpp +++ b/apps/statistics/app.cpp @@ -16,10 +16,10 @@ App::App(Container * container) : m_boxHeader(HeaderViewController(&m_tabViewController, &m_boxAlternateEmptyViewController, &m_boxController)), m_histogramController(HistogramController(&m_histogramAlternateEmptyViewController, &m_histogramHeader, &m_store)), m_histogramAlternateEmptyViewController(AlternateEmptyViewController(&m_histogramHeader, &m_histogramController, &m_histogramController)), - m_histogramHeader(HeaderViewController(nullptr, &m_histogramAlternateEmptyViewController, &m_histogramController)), + m_histogramHeader(HeaderViewController(&m_histogramStackViewController, &m_histogramAlternateEmptyViewController, &m_histogramController)), m_histogramStackViewController(StackViewController(&m_tabViewController, &m_histogramHeader)), m_storeController(&m_storeHeader, &m_store, &m_storeHeader), - m_storeHeader(HeaderViewController(nullptr, &m_storeController, &m_storeController)), + m_storeHeader(HeaderViewController(&m_storeStackViewController, &m_storeController, &m_storeController)), m_storeStackViewController(StackViewController(&m_tabViewController, &m_storeHeader)), m_tabViewController(&m_modalViewController, &m_storeStackViewController, &m_histogramStackViewController, &m_boxHeader, &m_calculationHeader) { diff --git a/apps/statistics/box_controller.cpp b/apps/statistics/box_controller.cpp index 1aa60e966..f5f564b8d 100644 --- a/apps/statistics/box_controller.cpp +++ b/apps/statistics/box_controller.cpp @@ -12,8 +12,7 @@ BoxController::BoxController(Responder * parentResponder, HeaderViewController * HeaderViewDelegate(headerViewController), m_boxBannerView(BoxBannerView()), m_view(BoxView(store, &m_boxBannerView)), - m_store(store), - m_displayModeVersion(Expression::FloatDisplayMode::Auto) + m_store(store) { } @@ -22,13 +21,6 @@ const char * BoxController::title() const { } View * BoxController::view() { - AppsContainer * myContainer = ((App *)app())->container(); - Expression::FloatDisplayMode FloatDisplayMode = myContainer->preferences()->displayMode(); - if (FloatDisplayMode != m_displayModeVersion) { - reloadBannerView(); - m_view.reload(); - m_displayModeVersion = FloatDisplayMode; - } return &m_view; } @@ -85,4 +77,9 @@ void BoxController::reloadBannerView() { m_boxBannerView.setLegendAtIndex(buffer, 1); } +void BoxController::viewWillAppear() { + reloadBannerView(); + m_view.reload(); +} + } diff --git a/apps/statistics/box_controller.h b/apps/statistics/box_controller.h index 4d39a3b63..ccaec3655 100644 --- a/apps/statistics/box_controller.h +++ b/apps/statistics/box_controller.h @@ -18,13 +18,13 @@ public: bool isEmpty() const override; const char * emptyMessage() override; Responder * defaultController() override; + void viewWillAppear() override; private: Responder * tabController() const; void reloadBannerView(); BoxBannerView m_boxBannerView; BoxView m_view; Store * m_store; - Poincare::Expression::FloatDisplayMode m_displayModeVersion; }; } diff --git a/apps/statistics/histogram_controller.cpp b/apps/statistics/histogram_controller.cpp index 8a62d6de4..42ad99cb7 100644 --- a/apps/statistics/histogram_controller.cpp +++ b/apps/statistics/histogram_controller.cpp @@ -22,8 +22,7 @@ HistogramController::HistogramController(Responder * parentResponder, HeaderView }, this))), m_store(store), m_cursor(CurveViewCursor()), - m_histogramParameterController(nullptr, store), - m_displayModeVersion(Expression::FloatDisplayMode::Auto) + m_histogramParameterController(nullptr, store) { } @@ -32,13 +31,6 @@ const char * HistogramController::title() const { } View * HistogramController::view() { - AppsContainer * container = ((App *)app())->container(); - Expression::FloatDisplayMode FloatDisplayMode = container->preferences()->displayMode(); - if (FloatDisplayMode != m_displayModeVersion) { - reloadBannerView(); - m_view.reload(); - m_displayModeVersion = FloatDisplayMode; - } return &m_view; } @@ -131,6 +123,11 @@ Responder * HistogramController::defaultController() { return tabController(); } +void HistogramController::viewWillAppear() { + reloadBannerView(); + m_view.reload(); +} + Responder * HistogramController::tabController() const { return (parentResponder()->parentResponder()->parentResponder()->parentResponder()); } diff --git a/apps/statistics/histogram_controller.h b/apps/statistics/histogram_controller.h index 0d8d4aa4a..f6c7f2447 100644 --- a/apps/statistics/histogram_controller.h +++ b/apps/statistics/histogram_controller.h @@ -27,6 +27,7 @@ public: bool isEmpty() const override; const char * emptyMessage() override; Responder * defaultController() override; + void viewWillAppear() override; private: constexpr static int k_maxNumberOfBarsPerWindow = 280; constexpr static int k_maxNumberOfCharacters = 12; @@ -47,7 +48,6 @@ private: uint32_t m_rangeVersion; int m_selectedBarIndex; HistogramParameterController m_histogramParameterController; - Poincare::Expression::FloatDisplayMode m_displayModeVersion; }; } diff --git a/apps/variable_box_controller.cpp b/apps/variable_box_controller.cpp index 884d9fafb..0fb93b7f6 100644 --- a/apps/variable_box_controller.cpp +++ b/apps/variable_box_controller.cpp @@ -222,6 +222,10 @@ void VariableBoxController::ContentViewController::setTextFieldCaller(TextField m_textFieldCaller = textField; } +void VariableBoxController::ContentViewController::reloadData() { + m_selectableTableView.reloadData(); +} + VariableBoxController::VariableBoxController(Context * context) : StackViewController(nullptr, &m_contentViewController, true, KDColorWhite, Palette::PurpleBright, Palette::PurpleDark), m_contentViewController(ContentViewController(this, context)) @@ -236,3 +240,7 @@ void VariableBoxController::didBecomeFirstResponder() { void VariableBoxController::setTextFieldCaller(TextField * textField) { m_contentViewController.setTextFieldCaller(textField); } + +void VariableBoxController::viewWillAppear() { + m_contentViewController.reloadData(); +} diff --git a/apps/variable_box_controller.h b/apps/variable_box_controller.h index 2a5213bd8..026064254 100644 --- a/apps/variable_box_controller.h +++ b/apps/variable_box_controller.h @@ -10,6 +10,7 @@ public: VariableBoxController(Poincare::Context * context); void didBecomeFirstResponder() override; void setTextFieldCaller(TextField * textField); + void viewWillAppear() override; private: class ContentViewController : public ViewController, public ListViewDataSource { public: @@ -27,6 +28,7 @@ private: int indexFromCumulatedHeight(KDCoordinate offsetY) override; int typeAtLocation(int i, int j) override; void setTextFieldCaller(TextField * textField); + void reloadData(); private: enum class Page { RootMenu,