From 442fe1e75ddedaf9d49f0cfd1d11defb846ec84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 16 Jun 2017 13:46:21 +0200 Subject: [PATCH] [apps] Add a macro SOFTWARE_NEEDS_UPDATE Change-Id: I70b0dd29455e0bcf84ba73ff31e8adb93f2c843a --- apps/apps_container.cpp | 2 ++ apps/on_boarding/language_controller.cpp | 8 +++++ apps/on_boarding/language_controller.h | 2 ++ apps/settings/main_controller.cpp | 42 ++++++++++++++++++------ apps/settings/main_controller.h | 9 +++-- 5 files changed, 51 insertions(+), 12 deletions(-) diff --git a/apps/apps_container.cpp b/apps/apps_container.cpp index e68e1f023..f81590c07 100644 --- a/apps/apps_container.cpp +++ b/apps/apps_container.cpp @@ -96,9 +96,11 @@ VariableBoxController * AppsContainer::variableBoxController() { } void AppsContainer::suspend(bool checkIfPowerKeyReleased) { +#if SOFTWARE_NEEDS_UPDATE if (activeApp()->snapshot()!= onBoardingAppSnapshot() && GlobalPreferences::sharedGlobalPreferences()->showUpdatePopUp()) { activeApp()->displayModalViewController(&m_updateController, 0.f, 0.f); } +#endif 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/on_boarding/language_controller.cpp b/apps/on_boarding/language_controller.cpp index 45a5cab10..84997f6ff 100644 --- a/apps/on_boarding/language_controller.cpp +++ b/apps/on_boarding/language_controller.cpp @@ -7,7 +7,9 @@ namespace OnBoarding { LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController) : ViewController(parentResponder), m_logoController(logoController), +#if SOFTWARE_NEEDS_UPDATE m_updateController(updateController), +#endif m_selectableTableView(this, this, 0, 1, (Ion::Display::Height - I18n::NumberOfLanguages*Metric::ParameterCellHeight)/2, Metric::CommonRightMargin, 0, Metric::CommonLeftMargin, this) { for (int i = 0; i < I18n::NumberOfLanguages; i++) { @@ -32,7 +34,13 @@ 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)); +#if SOFTWARE_NEEDS_UPDATE app()->displayModalViewController(m_updateController, 0.5f, 0.5f); +#else + AppsContainer * appsContainer = (AppsContainer *)app()->container(); + appsContainer->refreshPreferences(); + appsContainer->switchTo(appsContainer->appSnapshotAtIndex(0)); +#endif return true; } if (event == Ion::Events::Back) { diff --git a/apps/on_boarding/language_controller.h b/apps/on_boarding/language_controller.h index c00dafd5f..1bdcabbdb 100644 --- a/apps/on_boarding/language_controller.h +++ b/apps/on_boarding/language_controller.h @@ -24,7 +24,9 @@ public: void willDisplayCellForIndex(HighlightCell * cell, int index) override; private: LogoController * m_logoController; +#if SOFTWARE_NEEDS_UPDATE UpdateController * m_updateController; +#endif SelectableTableView m_selectableTableView; MessageTableCell m_cells[I18n::NumberOfLanguages]; }; diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index 365b60e0e..db31b8686 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -17,21 +17,35 @@ const SettingsNode languageChildren[I18n::NumberOfLanguages] = {SettingsNode(I18 const SettingsNode examChildren[1] = {SettingsNode(I18n::Message::ActivateExamMode)}; const SettingsNode aboutChildren[3] = {SettingsNode(I18n::Message::SoftwareVersion), SettingsNode(I18n::Message::SerialNumber), SettingsNode(I18n::Message::FccId)}; -const SettingsNode menu[7] = {SettingsNode(I18n::Message::AngleUnit, angleChildren, 2), SettingsNode(I18n::Message::DisplayMode, FloatDisplayModeChildren, 2), SettingsNode(I18n::Message::ComplexFormat, complexFormatChildren, 2), - SettingsNode(I18n::Message::Language, languageChildren, I18n::NumberOfLanguages), SettingsNode(I18n::Message::ExamMode, examChildren, 1), SettingsNode(I18n::Message::UpdatePopUp), SettingsNode(I18n::Message::About, aboutChildren, 3)}; +#if SOFTWARE_NEEDS_UPDATE +const SettingsNode menu[7] = +#else +const SettingsNode menu[6] = +#endif + {SettingsNode(I18n::Message::AngleUnit, angleChildren, 2), SettingsNode(I18n::Message::DisplayMode, FloatDisplayModeChildren, 2), SettingsNode(I18n::Message::ComplexFormat, complexFormatChildren, 2), + SettingsNode(I18n::Message::Language, languageChildren, I18n::NumberOfLanguages), SettingsNode(I18n::Message::ExamMode, examChildren, 1), +#if SOFTWARE_NEEDS_UPDATE + SettingsNode(I18n::Message::UpdatePopUp), +#endif + SettingsNode(I18n::Message::About, aboutChildren, 3)}; +#if SOFTWARE_NEEDS_UPDATE const SettingsNode model = SettingsNode(I18n::Message::SettingsApp, menu, 7); - +#else +const SettingsNode model = SettingsNode(I18n::Message::SettingsApp, menu, 6); +#endif MainController::MainController(Responder * parentResponder) : ViewController(parentResponder), - m_complexFormatCell(I18n::Message::Default, KDText::FontSize::Large), +#if SOFTWARE_NEEDS_UPDATE m_updateCell(I18n::Message::Default, KDText::FontSize::Large), +#endif + m_complexFormatCell(I18n::Message::Default, KDText::FontSize::Large), m_complexFormatLayout(nullptr), m_selectableTableView(this, this, 0, 1, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this), m_nodeModel((Node *)&model), m_subController(this) { - for (int i = 0; i < k_totalNumberOfCell-1; i++) { + for (int i = 0; i < k_numberOfSimpleChevronCells; i++) { m_cells[i].setMessageFontSize(KDText::FontSize::Large); } } @@ -59,6 +73,7 @@ void MainController::didBecomeFirstResponder() { bool MainController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { +#if SOFTWARE_NEEDS_UPDATE if (m_nodeModel->children(selectedRow())->numberOfChildren() == 0) { if (event == Ion::Events::Right) { return false; @@ -67,6 +82,7 @@ bool MainController::handleEvent(Ion::Events::Event event) { m_selectableTableView.reloadCellAtLocation(m_selectableTableView.selectedColumn(), m_selectableTableView.selectedRow()); return true; } +#endif m_subController.setNodeModel(m_nodeModel->children(selectedRow())); StackViewController * stack = stackController(); stack->push(&m_subController); @@ -94,19 +110,21 @@ int MainController::indexFromCumulatedHeight(KDCoordinate offsetY) { HighlightCell * MainController::reusableCell(int index, int type) { assert(index >= 0); if (type == 0) { - assert(index < k_totalNumberOfCell-1); + assert(index < k_numberOfSimpleChevronCells); return &m_cells[index]; } assert(index == 0); - if (type == 1) { - return &m_complexFormatCell; +#if SOFTWARE_NEEDS_UPDATE + if (type == 2) { + return &m_updateCell; } - return &m_updateCell; +#endif + return &m_complexFormatCell; } int MainController::reusableCellCount(int type) { if (type == 0) { - return k_totalNumberOfCell-2; + return k_numberOfSimpleChevronCells; } return 1; } @@ -115,9 +133,11 @@ int MainController::typeAtLocation(int i, int j) { if (j == 2) { return 1; } +#if SOFTWARE_NEEDS_UPDATE if (j == 5) { return 2; } +#endif return 0; } @@ -142,12 +162,14 @@ void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) { myExpCell->setExpression(m_complexFormatLayout); return; } +#if SOFTWARE_NEEDS_UPDATE if (index == 5) { MessageTableCellWithSwitch * mySwitchCell = (MessageTableCellWithSwitch *)cell; SwitchView * mySwitch = (SwitchView *)mySwitchCell->accessoryView(); mySwitch->setState(GlobalPreferences::sharedGlobalPreferences()->showUpdatePopUp()); return; } +#endif MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; switch (index) { case 0: diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index c5fc15ae3..8aee13e28 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -30,10 +30,15 @@ public: void viewWillAppear() override; private: StackViewController * stackController() const; +#if SOFTWARE_NEEDS_UPDATE constexpr static int k_totalNumberOfCell = 7; - MessageTableCellWithChevronAndMessage m_cells[k_totalNumberOfCell-1]; - MessageTableCellWithChevronAndExpression m_complexFormatCell; MessageTableCellWithSwitch m_updateCell; +#else + constexpr static int k_totalNumberOfCell = 6; +#endif + constexpr static int k_numberOfSimpleChevronCells = 5; + MessageTableCellWithChevronAndMessage m_cells[k_numberOfSimpleChevronCells]; + MessageTableCellWithChevronAndExpression m_complexFormatCell; Poincare::ExpressionLayout * m_complexFormatLayout; SelectableTableView m_selectableTableView; Node * m_nodeModel;