diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index 5a7f48c22..18c0c909d 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -18,7 +18,6 @@ MainController::MainController(Responder * parentResponder, InputEventHandlerDel m_accessibilityController(this), m_examModeController(this), m_aboutController(this), - m_contributorsController(this), m_symbolController(this) { for (int i = 0; i < k_numberOfSimpleChevronCells; i++) { @@ -68,20 +67,17 @@ bool MainController::handleEvent(Ion::Events::Event event) { } if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { GenericSubController * subController = nullptr; - int rowIndex = selectedRow(); - if (rowIndex == 1) { + if (model()->children(selectedRow())->label() == I18n::Message::DisplayMode) { subController = &m_displayModeController; - } else if (rowIndex == 4 || rowIndex == 5) { + } else if (model()->children(selectedRow())->label() == I18n::Message::Brightness || model()->children(selectedRow())->label() == I18n::Message::Language) { assert(false); - } else if (rowIndex == 6) { + } else if (model()->children(selectedRow())->label() == I18n::Message::ExamMode) { subController = &m_examModeController; - } else if (rowIndex == 7 + hasPrompt()) { + } else if (model()->children(selectedRow())->label() == I18n::Message::About) { subController = &m_aboutController; - } else if (rowIndex == 9 + hasPrompt()) { + } else if (model()->children(selectedRow())->label() == I18n::Message::Accessibility) { subController = &m_accessibilityController; - } else if (rowIndex == 10 + hasPrompt()) { - subController = &m_contributorsController; - } else if (rowIndex == 11 + hasPrompt()){ + } else if (model()->children(selectedRow())->label() == I18n::Message::SymbolMultiplication){ subController = &m_symbolController; } else { subController = &m_preferencesController; @@ -132,10 +128,10 @@ int MainController::reusableCellCount(int type) { } int MainController::typeAtLocation(int i, int j) { - if (j == 4) { + if (model()->children(j)->label() == I18n::Message::Brightness) { return 1; } - if (hasPrompt() && j == 7) { + if (model()->children(j)->label() == I18n::Message::UpdatePopUp || model()->children(j)->label() == I18n::Message::BetaPopUp) { return 2; } return 0; @@ -145,49 +141,45 @@ void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) { GlobalPreferences * globalPreferences = GlobalPreferences::sharedGlobalPreferences(); Preferences * preferences = Preferences::sharedPreferences(); MessageTableCell * myCell = (MessageTableCell *)cell; - myCell->setMessage(model()->children(index)->label()); - if (index == 4) { + I18n::Message thisLabel = model()->children(index)->label(); + myCell->setMessage(thisLabel); + + //switch to irregular cell types + if (thisLabel == I18n::Message::Brightness) { MessageTableCellWithGauge * myGaugeCell = (MessageTableCellWithGauge *)cell; GaugeView * myGauge = (GaugeView *)myGaugeCell->accessoryView(); myGauge->setLevel((float)globalPreferences->brightnessLevel()/(float)Ion::Backlight::MaxBrightness); return; } - if (index == 5) { + if (thisLabel == I18n::Message::Language) { int index = (int)globalPreferences->language()-1; static_cast(cell)->setSubtitle(I18n::LanguageNames[index]); return; } - if (hasPrompt() && index == 7) { + if (hasPrompt() && (thisLabel == I18n::Message::UpdatePopUp || thisLabel == I18n::Message::BetaPopUp)) { MessageTableCellWithSwitch * mySwitchCell = (MessageTableCellWithSwitch *)cell; SwitchView * mySwitch = (SwitchView *)mySwitchCell->accessoryView(); mySwitch->setState(globalPreferences->showPopUp()); return; } + + //add text for preferences MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; int childIndex = -1; - switch (index) { - case 0: + switch (thisLabel) { + case I18n::Message::AngleUnit: childIndex = (int)preferences->angleUnit(); break; - case 1: + case I18n::Message::DisplayMode: childIndex = (int)preferences->displayMode(); break; - case 2: + case I18n::Message::EditionMode: childIndex = (int)preferences->editionMode(); break; - case 3: + case I18n::Message::ComplexFormat: childIndex = (int)preferences->complexFormat(); break; - //after prompt - case 8: - if (!hasPrompt()) { - childIndex = (int)preferences->colorOfLED(); - } - break; - case 9: - if (hasPrompt()) { - childIndex = (int)preferences->colorOfLED(); - } + default: break; } I18n::Message message = childIndex >= 0 ? model()->children(index)->children(childIndex)->label() : I18n::Message::Default; diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index bacdcfeb4..f92057f99 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -9,7 +9,6 @@ #include "sub_menu/exam_mode_controller.h" #include "sub_menu/language_controller.h" #include "sub_menu/preferences_controller.h" -#include "sub_menu/contributors_controller.h" #include "sub_menu/symbol_controller.h" namespace Settings { @@ -29,12 +28,12 @@ public: int typeAtLocation(int i, int j) override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; void viewWillAppear() override; -private: static const SettingsMessageTree * model(); +private: StackViewController * stackController() const; I18n::Message promptMessage() const; bool hasPrompt() const { return promptMessage() != I18n::Message::Default; } - constexpr static int k_numberOfSimpleChevronCells = 9; + constexpr static int k_numberOfSimpleChevronCells = 7; MessageTableCellWithChevronAndMessage m_cells[k_numberOfSimpleChevronCells]; MessageTableCellWithGauge m_brightnessCell; MessageTableCellWithSwitch m_popUpCell; @@ -45,7 +44,6 @@ private: AccessibilityController m_accessibilityController; ExamModeController m_examModeController; AboutController m_aboutController; - ContributorsController m_contributorsController; SymbolController m_symbolController; }; diff --git a/apps/settings/main_controller_prompt_beta.cpp b/apps/settings/main_controller_prompt_beta.cpp index 423a36cdd..89344556c 100644 --- a/apps/settings/main_controller_prompt_beta.cpp +++ b/apps/settings/main_controller_prompt_beta.cpp @@ -3,19 +3,22 @@ namespace Settings { +//sub-sub-menus +constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; +constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; + +//sub-menus constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18n::Message::Degrees), SettingsMessageTree(I18n::Message::Radian), SettingsMessageTree(I18n::Message::Gradians)}; constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)}; constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)}; constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)}; -constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)}; +constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::ActivateExamMode)}; #ifdef USERNAME -constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[6] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #else -constexpr SettingsMessageTree s_modelAboutChildren[4] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #endif -constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; constexpr SettingsMessageTree s_accessibilityChildren[6] = {SettingsMessageTree(I18n::Message::AccessibilityInvertColors), SettingsMessageTree(I18n::Message::AccessibilityMagnify),SettingsMessageTree(I18n::Message::AccessibilityGamma),SettingsMessageTree(I18n::Message::AccessibilityGammaRed),SettingsMessageTree(I18n::Message::AccessibilityGammaGreen),SettingsMessageTree(I18n::Message::AccessibilityGammaBlue)}; -constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; constexpr SettingsMessageTree s_symbolChildren[4] = {SettingsMessageTree(I18n::Message::SymbolMultiplicationCross),SettingsMessageTree(I18n::Message::SymbolMultiplicationMiddleDot),SettingsMessageTree(I18n::Message::SymbolMultiplicationStar),SettingsMessageTree(I18n::Message::SymbolMultiplicationAutoSymbol)}; constexpr SettingsMessageTree s_modelMenu[] = @@ -25,19 +28,17 @@ constexpr SettingsMessageTree s_modelMenu[] = SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3), SettingsMessageTree(I18n::Message::Brightness), SettingsMessageTree(I18n::Message::Language), - SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1), + SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2), SettingsMessageTree(I18n::Message::BetaPopUp), #ifdef USERNAME - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 6), #else - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 4), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), #endif - SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::Accessibility, s_accessibilityChildren, 6), - SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren, 4)}; -constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 13); +constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 11); I18n::Message MainController::promptMessage() const { return I18n::Message::BetaPopUp; diff --git a/apps/settings/main_controller_prompt_none.cpp b/apps/settings/main_controller_prompt_none.cpp index 358e07f94..bc0de44cb 100644 --- a/apps/settings/main_controller_prompt_none.cpp +++ b/apps/settings/main_controller_prompt_none.cpp @@ -4,19 +4,22 @@ namespace Settings { // TODO: factorize most parts of the final models with main_controller_prompt_beta and main_controller_prompt_update +//sub-sub-menus +constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; +constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; + +//sub-menus constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18n::Message::Degrees), SettingsMessageTree(I18n::Message::Radian), SettingsMessageTree(I18n::Message::Gradians)}; constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)}; constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)}; constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)}; -constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)}; +constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::ActivateExamMode)}; #ifdef USERNAME -constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[6] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #else -constexpr SettingsMessageTree s_modelAboutChildren[4] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #endif -constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; constexpr SettingsMessageTree s_accessibilityChildren[6] = {SettingsMessageTree(I18n::Message::AccessibilityInvertColors), SettingsMessageTree(I18n::Message::AccessibilityMagnify),SettingsMessageTree(I18n::Message::AccessibilityGamma),SettingsMessageTree(I18n::Message::AccessibilityGammaRed),SettingsMessageTree(I18n::Message::AccessibilityGammaGreen),SettingsMessageTree(I18n::Message::AccessibilityGammaBlue)}; -constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; constexpr SettingsMessageTree s_symbolChildren[4] = {SettingsMessageTree(I18n::Message::SymbolMultiplicationCross),SettingsMessageTree(I18n::Message::SymbolMultiplicationMiddleDot),SettingsMessageTree(I18n::Message::SymbolMultiplicationStar),SettingsMessageTree(I18n::Message::SymbolMultiplicationAutoSymbol)}; constexpr SettingsMessageTree s_modelMenu[] = @@ -26,18 +29,16 @@ constexpr SettingsMessageTree s_modelMenu[] = SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3), SettingsMessageTree(I18n::Message::Brightness), SettingsMessageTree(I18n::Message::Language), - SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1), + SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2), #ifdef USERNAME - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 6), #else - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 4), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), #endif - SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::Accessibility, s_accessibilityChildren, 6), - SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren, 4)}; -constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 12); +constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 10); I18n::Message MainController::promptMessage() const { return I18n::Message::Default; diff --git a/apps/settings/main_controller_prompt_update.cpp b/apps/settings/main_controller_prompt_update.cpp index 90461f939..181179e91 100644 --- a/apps/settings/main_controller_prompt_update.cpp +++ b/apps/settings/main_controller_prompt_update.cpp @@ -3,19 +3,22 @@ namespace Settings { +//sub-sub-menus +constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; +constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; + +//sub-menus constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18n::Message::Degrees), SettingsMessageTree(I18n::Message::Radian), SettingsMessageTree(I18n::Message::Gradians)}; constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)}; constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)}; constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)}; -constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)}; +constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::ActivateExamMode)}; #ifdef USERNAME -constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[6] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #else -constexpr SettingsMessageTree s_modelAboutChildren[4] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)}; +constexpr SettingsMessageTree s_modelAboutChildren[5] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::CustomSoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5)}; #endif -constexpr SettingsMessageTree s_ledColorChildren[4] = {SettingsMessageTree(I18n::Message::ColorWhite), SettingsMessageTree(I18n::Message::ColorGreen), SettingsMessageTree(I18n::Message::ColorBlue), SettingsMessageTree(I18n::Message::ColorYellow)}; constexpr SettingsMessageTree s_accessibilityChildren[6] = {SettingsMessageTree(I18n::Message::AccessibilityInvertColors), SettingsMessageTree(I18n::Message::AccessibilityMagnify),SettingsMessageTree(I18n::Message::AccessibilityGamma),SettingsMessageTree(I18n::Message::AccessibilityGammaRed),SettingsMessageTree(I18n::Message::AccessibilityGammaGreen),SettingsMessageTree(I18n::Message::AccessibilityGammaBlue)}; -constexpr SettingsMessageTree s_contributorsChildren[5] = {SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess)}; constexpr SettingsMessageTree s_symbolChildren[4] = {SettingsMessageTree(I18n::Message::SymbolMultiplicationCross),SettingsMessageTree(I18n::Message::SymbolMultiplicationMiddleDot),SettingsMessageTree(I18n::Message::SymbolMultiplicationStar),SettingsMessageTree(I18n::Message::SymbolMultiplicationAutoSymbol)}; constexpr SettingsMessageTree s_modelMenu[] = @@ -25,19 +28,17 @@ constexpr SettingsMessageTree s_modelMenu[] = SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3), SettingsMessageTree(I18n::Message::Brightness), SettingsMessageTree(I18n::Message::Language), - SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1), + SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2), SettingsMessageTree(I18n::Message::UpdatePopUp), #ifdef USERNAME - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 6), #else - SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 4), + SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 5), #endif - SettingsMessageTree(I18n::Message::LEDColor, s_ledColorChildren, 4), SettingsMessageTree(I18n::Message::Accessibility, s_accessibilityChildren, 6), - SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren, 5), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren, 4)}; -constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 13); +constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 11); I18n::Message MainController::promptMessage() const { return I18n::Message::UpdatePopUp; diff --git a/apps/settings/sub_menu/about_controller.cpp b/apps/settings/sub_menu/about_controller.cpp index 5ccf77c6e..0e0472a99 100644 --- a/apps/settings/sub_menu/about_controller.cpp +++ b/apps/settings/sub_menu/about_controller.cpp @@ -1,11 +1,14 @@ #include "about_controller.h" #include #include +#include namespace Settings { AboutController::AboutController(Responder * parentResponder) : - GenericSubController(parentResponder) + GenericSubController(parentResponder), + m_contributorsController(this), + m_contributorsCell(KDFont::LargeFont, KDFont::SmallFont) { for (int i = 0; i < k_totalNumberOfCell; i++) { m_cells[i].setMessageFont(KDFont::LargeFont); @@ -15,38 +18,40 @@ AboutController::AboutController(Responder * parentResponder) : } bool AboutController::handleEvent(Ion::Events::Event event) { + I18n::Message childLabel = m_messageTreeModel->children(selectedRow())->label(); /* We hide here the activation hardware test app: in the menu "about", by * clicking on '6' on the last row. */ - if ((event == Ion::Events::Six || event == Ion::Events::LowerT || event == Ion::Events::UpperT) && m_messageTreeModel->label() == I18n::Message::About && selectedRow() == numberOfRows()-1) { + if ((event == Ion::Events::Six || event == Ion::Events::LowerT || event == Ion::Events::UpperT) && selectedRow() == numberOfRows() - 1) { Container::activeApp()->displayModalViewController(&m_hardwareTestPopUpController, 0.f, 0.f, Metric::ExamPopUpTopMargin, Metric::PopUpRightMargin, Metric::ExamPopUpBottomMargin, Metric::PopUpLeftMargin); return true; } - if (event == Ion::Events::OK || event == Ion::Events::EXE) { -#ifdef USERNAME - if (selectedRow() == 1) { -#else - if (selectedRow() == 0) { -#endif - MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); - if (strcmp(myCell->accessoryText(), Ion::patchLevel()) == 0) { - myCell->setAccessoryText(Ion::softwareVersion()); - return true; - } - myCell->setAccessoryText(Ion::patchLevel()); + if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { + if (childLabel == I18n::Message::Contributors) { + GenericSubController * subController = &m_contributorsController; + subController->setMessageTreeModel(m_messageTreeModel->children(selectedRow())); + StackViewController * stack = stackController(); + stack->push(subController); return true; } -#ifdef USERNAME - if (selectedRow() == 2) { -#else - if (selectedRow() == 1) { -#endif - MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); - if (strcmp(myCell->accessoryText(), Ion::customSoftwareVersion()) == 0) { - myCell->setAccessoryText("Public"); //Change for public/dev + if (!(event == Ion::Events::Right)) { + if (m_messageTreeModel->children(selectedRow())->label() == I18n::Message::SoftwareVersion) { + MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); + if (strcmp(myCell->accessoryText(), Ion::patchLevel()) == 0) { + myCell->setAccessoryText(Ion::softwareVersion()); + return true; + } + myCell->setAccessoryText(Ion::patchLevel()); + return true; + } + if (m_messageTreeModel->children(selectedRow())->label() == I18n::Message::CustomSoftwareVersion) { + MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); + if (strcmp(myCell->accessoryText(), Ion::customSoftwareVersion()) == 0) { + myCell->setAccessoryText("Public"); //Change for public/dev + return true; + } + myCell->setAccessoryText(Ion::customSoftwareVersion()); return true; } - myCell->setAccessoryText(Ion::customSoftwareVersion()); - return true; } return false; } @@ -54,34 +59,53 @@ bool AboutController::handleEvent(Ion::Events::Event event) { } HighlightCell * AboutController::reusableCell(int index, int type) { - assert(type == 0); - assert(index >= 0 && index < k_totalNumberOfCell); - return &m_cells[index]; + assert(index >= 0); + if (type == 0) { + assert(index < k_totalNumberOfCell-1); + return &m_cells[index]; + } + assert(index == 0); + if (type == 1) { + return &m_contributorsCell; + } +} + +int AboutController::typeAtLocation(int i, int j) { + return (j == numberOfRows() - 1 ? 1 : 0); } int AboutController::reusableCellCount(int type) { - assert(type == 0); - return k_totalNumberOfCell; + switch (type) { + case 0: + return k_totalNumberOfCell-1; + case 1: + return 1; + default: + assert(false); + return 0; + } } void AboutController::willDisplayCellForIndex(HighlightCell * cell, int index) { GenericSubController::willDisplayCellForIndex(cell, index); - MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)cell; - static const char * messages[] = { + assert(index >= 0 && index < k_totalNumberOfCell); + if (m_messageTreeModel->children(index)->label() == I18n::Message::Contributors) { + MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; + myTextCell->setSubtitle(I18n::Message::Default); + } + else { + MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)cell; + static const char * messages[] = { #ifdef USERNAME - Ion::username(), + Ion::username(), #endif - Ion::softwareVersion(), - Ion::customSoftwareVersion(), - Ion::serialNumber(), - Ion::fccId() - }; -#ifdef USERNAME - assert(index >= 0 && index < 5); -#else - assert(index >= 0 && index < 4); -#endif - myCell->setAccessoryText(messages[index]); + Ion::softwareVersion(), + Ion::customSoftwareVersion(), + Ion::serialNumber(), + Ion::fccId() + }; + myCell->setAccessoryText(messages[index]); + } } } diff --git a/apps/settings/sub_menu/about_controller.h b/apps/settings/sub_menu/about_controller.h index 61fa22e2b..541360d19 100644 --- a/apps/settings/sub_menu/about_controller.h +++ b/apps/settings/sub_menu/about_controller.h @@ -3,6 +3,7 @@ #include "generic_sub_controller.h" #include "../../hardware_test/pop_up_controller.h" +#include "contributors_controller.h" namespace Settings { @@ -13,12 +14,15 @@ public: HighlightCell * reusableCell(int index, int type) override; int reusableCellCount(int type) override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; + int typeAtLocation(int i, int j) override; private: #ifdef USERNAME - constexpr static int k_totalNumberOfCell = 5; + constexpr static int k_totalNumberOfCell = 6; #else - constexpr static int k_totalNumberOfCell = 4; + constexpr static int k_totalNumberOfCell = 5; #endif + ContributorsController m_contributorsController; + MessageTableCellWithChevronAndMessage m_contributorsCell; MessageTableCellWithBuffer m_cells[k_totalNumberOfCell]; HardwareTest::PopUpController m_hardwareTestPopUpController; }; diff --git a/apps/settings/sub_menu/exam_mode_controller.cpp b/apps/settings/sub_menu/exam_mode_controller.cpp index 6f24abcd7..78ba177db 100644 --- a/apps/settings/sub_menu/exam_mode_controller.cpp +++ b/apps/settings/sub_menu/exam_mode_controller.cpp @@ -3,6 +3,8 @@ #include "../../apps_container.h" #include #include +#include +#include using namespace Poincare; using namespace Shared; @@ -11,7 +13,9 @@ namespace Settings { ExamModeController::ExamModeController(Responder * parentResponder) : GenericSubController(parentResponder), - m_cell(I18n::Message::ExamModeActive, KDFont::LargeFont) + m_preferencesController(this), + m_examModeCell(I18n::Message::Default, KDFont::LargeFont), + m_ledCell(KDFont::LargeFont, KDFont::SmallFont) { } @@ -20,32 +24,72 @@ void ExamModeController::didEnterResponderChain(Responder * previousFirstRespond } bool ExamModeController::handleEvent(Ion::Events::Event event) { - if (event == Ion::Events::OK || event == Ion::Events::EXE) { - if (GlobalPreferences::sharedGlobalPreferences()->examMode() == GlobalPreferences::ExamMode::Activate) { - return false; + I18n::Message childLabel = m_messageTreeModel->children(selectedRow())->label(); + if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { + if (childLabel == I18n::Message::ActivateExamMode || childLabel == I18n::Message::ExamModeActive) { + if (GlobalPreferences::sharedGlobalPreferences()->examMode() == GlobalPreferences::ExamMode::Activate) { + return false; + } + AppsContainer::sharedAppsContainer()->displayExamModePopUp(true); + return true; + } + if (childLabel == I18n::Message::LEDColor) { + GenericSubController * subController = &m_preferencesController; + subController->setMessageTreeModel(m_messageTreeModel->children(selectedRow())); + StackViewController * stack = stackController(); + stack->push(subController); + return true; } - AppsContainer::sharedAppsContainer()->displayExamModePopUp(true); - return true; } return GenericSubController::handleEvent(event); } HighlightCell * ExamModeController::reusableCell(int index, int type) { - assert(type == 0); assert(index == 0); - return &m_cell; + if (type == 0) { + return &m_ledCell; + } + return &m_examModeCell; } int ExamModeController::reusableCellCount(int type) { - return 1; + switch (type) { + case 0: + return 1; + case 1: + return 1; + default: + assert(false); + return 0; + } } void ExamModeController::willDisplayCellForIndex(HighlightCell * cell, int index) { + Preferences * preferences = Preferences::sharedPreferences(); GenericSubController::willDisplayCellForIndex(cell, index); - if (GlobalPreferences::sharedGlobalPreferences()->examMode() == GlobalPreferences::ExamMode::Activate) { + I18n::Message thisLabel = m_messageTreeModel->children(index)->label(); + + if (GlobalPreferences::sharedGlobalPreferences()->examMode() == GlobalPreferences::ExamMode::Activate && (thisLabel == I18n::Message::ActivateExamMode || thisLabel == I18n::Message::ExamModeActive)) { MessageTableCell * myCell = (MessageTableCell *)cell; myCell->setMessage(I18n::Message::ExamModeActive); } + if (thisLabel == I18n::Message::LEDColor) { + MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; + I18n::Message message = (I18n::Message) m_messageTreeModel->children(index)->children((int)preferences->colorOfLED())->label(); + myTextCell->setSubtitle(message); + } +} + +int ExamModeController::typeAtLocation(int i, int j) { + switch (j) { + case 0: + return 0; + case 1: + return 1; + default: + assert(false); + return 0; + } } } diff --git a/apps/settings/sub_menu/exam_mode_controller.h b/apps/settings/sub_menu/exam_mode_controller.h index 22a0da0c7..de9b9f9ef 100644 --- a/apps/settings/sub_menu/exam_mode_controller.h +++ b/apps/settings/sub_menu/exam_mode_controller.h @@ -2,6 +2,7 @@ #define SETTINGS_EXAM_MODE_CONTROLLER_H #include "generic_sub_controller.h" +#include "preferences_controller.h" namespace Settings { @@ -13,8 +14,11 @@ public: HighlightCell * reusableCell(int index, int type) override; int reusableCellCount(int type) override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; + int typeAtLocation(int i, int j) override; private: - MessageTableCell m_cell; + MessageTableCell m_examModeCell; + MessageTableCellWithChevronAndMessage m_ledCell; + PreferencesController m_preferencesController; }; } diff --git a/build/config.mak b/build/config.mak index f70a8a0b7..7e69ecf41 100644 --- a/build/config.mak +++ b/build/config.mak @@ -4,7 +4,7 @@ PLATFORM ?= device DEBUG ?= 0 EPSILON_VERSION ?= 12.0.0 -EPSILON_CUSTOM_VERSION ?= 1.13.9-0 +EPSILON_CUSTOM_VERSION ?= 1.14.0-0 # USERNAME ?= N/A # Valid values are "none", "update", "beta" EPSILON_APPS ?= calculation rpn graph code statistics probability solver atom sequence regression settings diff --git a/ion/src/shared/platform_info.cpp b/ion/src/shared/platform_info.cpp index da7af7673..625bb363c 100644 --- a/ion/src/shared/platform_info.cpp +++ b/ion/src/shared/platform_info.cpp @@ -69,14 +69,14 @@ private: constexpr static uint32_t Magic = 0xDEC00DF0; uint32_t m_header; const char m_version[8]; - const char m_customVersion[16]; -#ifdef USERNAME - const char m_username[16]; -#endif const char m_patchLevel[8]; void * m_storageAddress; size_t m_storageSize; uint32_t m_footer; + const char m_customVersion[16]; +#ifdef USERNAME + const char m_username[16]; +#endif }; constexpr PlatformInfo HEADER_SECTION platform_infos;