From f8039fac32b72b32f9f942ff2bb200056d892db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 11 Jun 2018 11:40:25 +0200 Subject: [PATCH] [solver] Fix update of the button message between: 'Solve the equation' and 'Solve the system' --- apps/solver/list_controller.cpp | 5 +++-- escher/include/escher/button_row_controller.h | 2 ++ escher/src/button_row_controller.cpp | 12 ++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/solver/list_controller.cpp b/apps/solver/list_controller.cpp index d9001805b..ba7c1f3d3 100644 --- a/apps/solver/list_controller.cpp +++ b/apps/solver/list_controller.cpp @@ -10,7 +10,7 @@ ListController::ListController(Responder * parentResponder, EquationStore * equa ExpressionModelListController(parentResponder, I18n::Message::AddEquation), ButtonRowDelegate(nullptr, footer), m_equationStore(equationStore), - m_resolveButton(this, I18n::Message::ResolveEquation, Invocation([](void * context, void * sender) { + m_resolveButton(this, equationStore->numberOfDefinedModels() > 1 ? I18n::Message::ResolveSystem : I18n::Message::ResolveEquation, Invocation([](void * context, void * sender) { ListController * list = (ListController *)context; list->resolveEquations(); }, this), KDText::FontSize::Large, Palette::PurpleBright), @@ -182,7 +182,7 @@ void ListController::resolveEquations() { } void ListController::reloadButtonMessage() { - m_resolveButton.setMessage(m_equationStore->numberOfDefinedModels() > 1 ? I18n::Message::ResolveSystem : I18n::Message::ResolveEquation); + footer()->setMessageOfButtonAtIndex(m_equationStore->numberOfDefinedModels() > 1 ? I18n::Message::ResolveSystem : I18n::Message::ResolveEquation, 0); } void ListController::addEmptyModel() { @@ -191,6 +191,7 @@ void ListController::addEmptyModel() { bool ListController::removeModelRow(ExpressionModel * model) { ExpressionModelListController::removeModelRow(model); + reloadButtonMessage(); reloadBrace(); return true; } diff --git a/escher/include/escher/button_row_controller.h b/escher/include/escher/button_row_controller.h index ba93737af..4f4faa66f 100644 --- a/escher/include/escher/button_row_controller.h +++ b/escher/include/escher/button_row_controller.h @@ -32,6 +32,7 @@ public: bool handleEvent(Ion::Events::Event event) override; int selectedButton(); bool setSelectedButton(int selectedButton); + void setMessageOfButtonAtIndex(I18n::Message message, int index); void viewWillAppear() override; void viewDidDisappear() override; ViewController::DisplayParameter displayParameter() override { return DisplayParameter::DoNotShowOwnTitle; } @@ -41,6 +42,7 @@ private: ContentView(ViewController * mainViewController, ButtonRowDelegate * delegate, Position position, Style style, Size size); int numberOfButtons() const; Button * buttonAtIndex(int index) const; + void reload(); int numberOfSubviews() const override; View * subviewAtIndex(int index) override; void layoutSubviews() override; diff --git a/escher/src/button_row_controller.cpp b/escher/src/button_row_controller.cpp index 886ef3c87..e225a5fae 100644 --- a/escher/src/button_row_controller.cpp +++ b/escher/src/button_row_controller.cpp @@ -27,6 +27,10 @@ Button * ButtonRowController::ContentView::buttonAtIndex(int index) const { return m_delegate->buttonAtIndex(index, m_position); } +void ButtonRowController::ContentView::reload() { + markRectAsDirty(bounds()); +} + int ButtonRowController::ContentView::numberOfSubviews() const { return numberOfButtons() + 1; } @@ -178,6 +182,14 @@ bool ButtonRowController::setSelectedButton(int selectedButton) { return m_contentView.setSelectedButton(selectedButton, application); } +void ButtonRowController::setMessageOfButtonAtIndex(I18n::Message message, int index) { + if (m_contentView.numberOfButtons() > index) { + m_contentView.buttonAtIndex(0)->setMessage(message); + m_contentView.layoutSubviews(); + m_contentView.reload(); + } +} + bool ButtonRowController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::Left) { if (m_contentView.selectedButton() == 0) {