[apps] Use viewWillAppear to reload view after preference change

Change-Id: I4fba6bd6d4dee03e86ac5087dbc20ef4d7dd032b
This commit is contained in:
Émilie Feral
2017-02-14 11:07:16 +01:00
parent 4dc34856f3
commit aec8facd0e
14 changed files with 49 additions and 53 deletions

View File

@@ -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)

View File

@@ -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());

View File

@@ -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;

View File

@@ -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;
};
}

View File

@@ -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)
{

View File

@@ -1,8 +1,7 @@
#include "interactive_curve_view_controller.h"
#include "text_field_delegate_app.h"
#include "../apps_container.h"
#include <assert.h>
#include <math.h>
#include <assert.h>
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());
}

View File

@@ -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;
};
}

View File

@@ -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)
{

View File

@@ -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();
}
}

View File

@@ -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;
};
}

View File

@@ -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());
}

View File

@@ -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;
};
}

View File

@@ -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();
}

View File

@@ -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,