diff --git a/apps/apps_container.cpp b/apps/apps_container.cpp index a3cb34a62..0d380746e 100644 --- a/apps/apps_container.cpp +++ b/apps/apps_container.cpp @@ -15,12 +15,13 @@ AppsContainer::AppsContainer() : m_globalContext(), m_variableBoxController(&m_globalContext), m_examPopUpController(ExamPopUpController()), + m_updateController(), m_ledTimer(LedTimer()), m_batteryTimer(BatteryTimer(this)), m_USBTimer(USBTimer(this)), m_suspendTimer(SuspendTimer(this)), m_backlightDimmingTimer(BacklightDimmingTimer()), - m_onBoardingApp(new OnBoarding::App(this)), + m_onBoardingApp(new OnBoarding::App(this, &m_updateController)), m_homeApp(new Home::App(this)), m_graphApp(new Graph::App(this, &m_globalContext)), m_probabilityApp(new Probability::App(this)), @@ -132,6 +133,9 @@ VariableBoxController * AppsContainer::variableBoxController() { } void AppsContainer::suspend(bool checkIfPowerKeyReleased) { + if (activeApp() != m_onBoardingApp) { + activeApp()->displayModalViewController(&m_updateController, 0.f, 0.f); + } Ion::Power::suspend(checkIfPowerKeyReleased); /* Ion::Power::suspend() completely shuts down the LCD controller. Therefore * the frame memory is lost. That's why we need to force a window redraw diff --git a/apps/apps_container.h b/apps/apps_container.h index 4cc689e00..c69e28c47 100644 --- a/apps/apps_container.h +++ b/apps/apps_container.h @@ -7,6 +7,7 @@ #include "calculation/app.h" #include "hardware_test/app.h" #include "on_boarding/app.h" +#include "on_boarding/update_controller.h" #include "regression/app.h" #include "sequence/app.h" #include "settings/app.h" @@ -73,6 +74,7 @@ private: MathToolbox m_mathToolbox; VariableBoxController m_variableBoxController; ExamPopUpController m_examPopUpController; + UpdateController m_updateController; LedTimer m_ledTimer; BatteryTimer m_batteryTimer; USBTimer m_USBTimer; diff --git a/apps/on_boarding/app.cpp b/apps/on_boarding/app.cpp index 6d10ef2f8..828ffc8e3 100644 --- a/apps/on_boarding/app.cpp +++ b/apps/on_boarding/app.cpp @@ -2,9 +2,9 @@ namespace OnBoarding { -App::App(Container * container) : +App::App(Container * container, UpdateController * updateController) : ::App(container, &m_languageController), - m_languageController(&m_modalViewController, &m_logoController), + m_languageController(&m_modalViewController, &m_logoController, updateController), m_logoController() { } diff --git a/apps/on_boarding/app.h b/apps/on_boarding/app.h index d830d2735..7048858d1 100644 --- a/apps/on_boarding/app.h +++ b/apps/on_boarding/app.h @@ -4,12 +4,13 @@ #include #include "language_controller.h" #include "logo_controller.h" +#include "update_controller.h" namespace OnBoarding { class App : public ::App { public: - App(Container * container); + App(Container * container, UpdateController * updateController); void reinitOnBoarding(); bool hasTimer(); Timer * timer(); diff --git a/apps/on_boarding/language_controller.cpp b/apps/on_boarding/language_controller.cpp index b06405cc6..8dc413c87 100644 --- a/apps/on_boarding/language_controller.cpp +++ b/apps/on_boarding/language_controller.cpp @@ -4,9 +4,10 @@ namespace OnBoarding { -LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController) : +LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController) : ViewController(parentResponder), m_logoController(logoController), + m_updateController(updateController), m_cells{MessageTableCell(I18n::Message::Default, KDText::FontSize::Large), MessageTableCell(I18n::Message::Default, KDText::FontSize::Large), MessageTableCell(I18n::Message::Default, KDText::FontSize::Large)}, m_selectableTableView(SelectableTableView(this, this, 0, 1, (Ion::Display::Height - I18n::NumberOfLanguages*Metric::ParameterCellHeight)/2, Metric::CommonRightMargin, 0, Metric::CommonLeftMargin, this)) { @@ -29,7 +30,7 @@ void LanguageController::didBecomeFirstResponder() { bool LanguageController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::OK || event == Ion::Events::EXE) { GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)(selectedRow()+1)); - app()->displayModalViewController(&m_updateController, 0.5f, 0.5f); + app()->displayModalViewController(m_updateController, 0.5f, 0.5f); return true; } if (event == Ion::Events::Back) { diff --git a/apps/on_boarding/language_controller.h b/apps/on_boarding/language_controller.h index 423680f9b..9f0a4b2a7 100644 --- a/apps/on_boarding/language_controller.h +++ b/apps/on_boarding/language_controller.h @@ -10,7 +10,7 @@ namespace OnBoarding { class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { public: - LanguageController(Responder * parentResponder, LogoController * logoController); + LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController); View * view() override; void reinitOnBoarding(); void didBecomeFirstResponder() override; @@ -24,7 +24,7 @@ public: void willDisplayCellForIndex(HighlightCell * cell, int index) override; private: LogoController * m_logoController; - UpdateController m_updateController; + UpdateController * m_updateController; MessageTableCell m_cells[I18n::NumberOfLanguages]; SelectableTableView m_selectableTableView; };