[solver] Fix update of the button message between: 'Solve the equation'

and 'Solve the system'
This commit is contained in:
Émilie Feral
2018-06-11 11:40:25 +02:00
parent 2002cc0ff5
commit f8039fac32
3 changed files with 17 additions and 2 deletions

View File

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

View File

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

View File

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