[apps/graph][apps/sequence] In values controller, memoize the number of

columns to improve performance

Change-Id: Ie3c545d0198a2f23575bd22fdbf56e9c6b8ff2b8
This commit is contained in:
Émilie Feral
2017-06-01 13:19:51 +02:00
parent 25383b73e5
commit d2c55eb7d0
14 changed files with 67 additions and 39 deletions

View File

@@ -8,12 +8,14 @@ using namespace Poincare;
namespace Shared {
ValuesController::ValuesController(Responder * parentResponder, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval) :
ValuesController::ValuesController(Responder * parentResponder, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval, uint32_t * modelVersion) :
EditableCellTableViewController(parentResponder),
ButtonRowDelegate(header, nullptr),
m_interval(interval),
m_numberOfColumns(0),
m_abscissaTitleCell(nullptr),
m_abscissaCells{},
m_modelVersion(modelVersion),
m_abscissaParameterController(this, intervalParameterController, parameterTitle),
m_setIntervalButton(this, I18n::Message::IntervalSet, Invocation([](void * context, void * sender) {
ValuesController * valuesController = (ValuesController *) context;
@@ -27,6 +29,10 @@ const char * ValuesController::title() {
return I18n::translate(I18n::Message::ValuesTab);
}
int ValuesController::numberOfColumns() {
return m_numberOfColumns;
}
Interval * ValuesController::interval() {
return m_interval;
}
@@ -228,6 +234,11 @@ Responder * ValuesController::defaultController() {
}
void ValuesController::viewWillAppear() {
uint32_t newModelVersion = functionStore()->storeChecksum();
if (*m_modelVersion != newModelVersion) {
*m_modelVersion = newModelVersion;
updateNumberOfColumns();
}
EditableCellTableViewController::viewWillAppear();
header()->setSelectedButton(-1);
}
@@ -313,5 +324,9 @@ void ValuesController::unloadView(View * view) {
EditableCellTableViewController::unloadView(view);
}
void ValuesController::updateNumberOfColumns() {
m_numberOfColumns = 1+functionStore()->numberOfActiveFunctions();
}
}