diff --git a/apps/solver/solutions_controller.cpp b/apps/solver/solutions_controller.cpp index fce4baae5..90e780373 100644 --- a/apps/solver/solutions_controller.cpp +++ b/apps/solver/solutions_controller.cpp @@ -16,8 +16,8 @@ using namespace Shared; namespace Solver { SolutionsController::ContentView::ContentView(SolutionsController * controller) : - m_warningMessageView0(KDFont::SmallFont, I18n::Message::OnlyFirstSolutionsDisplayed0, 0.5f, 0.5f, KDColorBlack, Palette::WallScreenDark), - m_warningMessageView1(KDFont::SmallFont, I18n::Message::OnlyFirstSolutionsDisplayed1, 0.5f, 0.5f, KDColorBlack, Palette::WallScreenDark), + m_warningMessageView0(KDFont::SmallFont, I18n::Message::Default, 0.5f, 0.5f, KDColorBlack, Palette::WallScreenDark), + m_warningMessageView1(KDFont::SmallFont, I18n::Message::Default, 0.5f, 0.5f, KDColorBlack, Palette::WallScreenDark), m_selectableTableView(controller), m_displayWarningMoreSolutions(false) { @@ -31,11 +31,15 @@ void SolutionsController::ContentView::drawRect(KDContext * ctx, KDRect rect) co } } -void SolutionsController::ContentView::setWarningMoreSolutions(bool warning) { +void SolutionsController::ContentView::setWarning(bool warning) { m_displayWarningMoreSolutions = warning; m_selectableTableView.setTopMargin(m_displayWarningMoreSolutions ? 0 : Metric::CommonTopMargin); layoutSubviews(); - markRectAsDirty(bounds()); +} + +void SolutionsController::ContentView::setWarningMessages(I18n::Message message0, I18n::Message message1) { + m_warningMessageView0.setMessage(message0); + m_warningMessageView1.setMessage(message1); } int SolutionsController::ContentView::numberOfSubviews() const { @@ -100,7 +104,16 @@ View * SolutionsController::view() { void SolutionsController::viewWillAppear() { ViewController::viewWillAppear(); App * solverApp = static_cast(app()); - m_contentView.setWarningMoreSolutions(m_equationStore->haveMoreApproximationSolutions(solverApp->localContext())); + bool requireWarning = false; + if (m_equationStore->type() == EquationStore::Type::Monovariable) { + m_contentView.setWarningMessages(I18n::Message::OnlyFirstSolutionsDisplayed0, I18n::Message::OnlyFirstSolutionsDisplayed1); + requireWarning = m_equationStore->haveMoreApproximationSolutions(solverApp->localContext()); + } else if (m_equationStore->type() == EquationStore::Type::PolynomialMonovariable && m_equationStore->numberOfSolutions() == 1) { + assert(Preferences::sharedPreferences()->complexFormat() == Preferences::ComplexFormat::Real); + m_contentView.setWarningMessages(I18n::Message::PolynomeHasNoRealSolution0, I18n::Message::PolynomeHasNoRealSolution1); + requireWarning = true; + } + m_contentView.setWarning(requireWarning); m_contentView.selectableTableView()->reloadData(); if (selectedRow() < 0) { selectCellAtLocation(0, 0); diff --git a/apps/solver/solutions_controller.h b/apps/solver/solutions_controller.h index a136bb675..6ad68bceb 100644 --- a/apps/solver/solutions_controller.h +++ b/apps/solver/solutions_controller.h @@ -38,7 +38,8 @@ private: public: ContentView(SolutionsController * controller); void drawRect(KDContext * ctx, KDRect rect) const override; - void setWarningMoreSolutions(bool warning); + void setWarning(bool warning); + void setWarningMessages(I18n::Message message0, I18n::Message message1); SelectableTableView * selectableTableView() { return &m_selectableTableView; }