diff --git a/apps/settings/Makefile b/apps/settings/Makefile index c60b78c21..1226acb40 100644 --- a/apps/settings/Makefile +++ b/apps/settings/Makefile @@ -14,6 +14,7 @@ app_settings_src = $(addprefix apps/settings/,\ sub_menu/message_table_cell_with_editable_text_with_separator.cpp \ sub_menu/preferences_controller.cpp \ sub_menu/contributors_controller.cpp \ + sub_menu/math_options_controller.cpp \ ) app_src += $(app_settings_src) diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index eb3374855..59ac61ca8 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -12,8 +12,7 @@ MainController::MainController(Responder * parentResponder, InputEventHandlerDel m_brightnessCell(I18n::Message::Default, KDFont::LargeFont), m_popUpCell(I18n::Message::Default, KDFont::LargeFont), m_selectableTableView(this), - m_preferencesController(this), - m_displayModeController(this, inputEventHandlerDelegate), + m_mathOptionsController(this, inputEventHandlerDelegate), m_languageController(this, 13), m_accessibilityController(this), m_examModeController(this), @@ -66,9 +65,7 @@ bool MainController::handleEvent(Ion::Events::Event event) { } if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { GenericSubController * subController = nullptr; - if (model()->children(selectedRow())->label() == I18n::Message::DisplayMode) { - subController = &m_displayModeController; - } else if (model()->children(selectedRow())->label() == I18n::Message::Brightness || model()->children(selectedRow())->label() == I18n::Message::Language) { + if (model()->children(selectedRow())->label() == I18n::Message::Brightness || model()->children(selectedRow())->label() == I18n::Message::Language) { assert(false); } else if (model()->children(selectedRow())->label() == I18n::Message::ExamMode) { subController = &m_examModeController; @@ -76,8 +73,8 @@ bool MainController::handleEvent(Ion::Events::Event event) { subController = &m_aboutController; } else if (model()->children(selectedRow())->label() == I18n::Message::Accessibility) { subController = &m_accessibilityController; - } else { - subController = &m_preferencesController; + } else if (model()->children(selectedRow())->label() == I18n::Message::MathOptions) { + subController = &m_mathOptionsController; } subController->setMessageTreeModel(model()->children(selectedRow())); StackViewController * stack = stackController(); @@ -136,7 +133,6 @@ int MainController::typeAtLocation(int i, int j) { void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) { GlobalPreferences * globalPreferences = GlobalPreferences::sharedGlobalPreferences(); - Preferences * preferences = Preferences::sharedPreferences(); MessageTableCell * myCell = (MessageTableCell *)cell; I18n::Message thisLabel = model()->children(index)->label(); myCell->setMessage(thisLabel); @@ -159,28 +155,6 @@ void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) { mySwitch->setState(globalPreferences->showPopUp()); return; } - - //add text for preferences - MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; - int childIndex = -1; - switch (thisLabel) { - case I18n::Message::AngleUnit: - childIndex = (int)preferences->angleUnit(); - break; - case I18n::Message::DisplayMode: - childIndex = (int)preferences->displayMode(); - break; - case I18n::Message::EditionMode: - childIndex = (int)preferences->editionMode(); - break; - case I18n::Message::ComplexFormat: - childIndex = (int)preferences->complexFormat(); - break; - default: - break; - } - I18n::Message message = childIndex >= 0 ? model()->children(index)->children(childIndex)->label() : I18n::Message::Default; - myTextCell->setSubtitle(message); } void MainController::viewWillAppear() { diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index 3b7c42f33..bfa85be37 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -5,10 +5,9 @@ #include "settings_message_tree.h" #include "sub_menu/about_controller.h" #include "sub_menu/accessibility_controller.h" -#include "sub_menu/display_mode_controller.h" #include "sub_menu/exam_mode_controller.h" #include "sub_menu/language_controller.h" -#include "sub_menu/preferences_controller.h" +#include "sub_menu/math_options_controller.h" namespace Settings { @@ -32,13 +31,12 @@ private: StackViewController * stackController() const; I18n::Message promptMessage() const; bool hasPrompt() const { return promptMessage() != I18n::Message::Default; } - constexpr static int k_numberOfSimpleChevronCells = 7; + constexpr static int k_numberOfSimpleChevronCells = 5; MessageTableCellWithChevronAndMessage m_cells[k_numberOfSimpleChevronCells]; MessageTableCellWithGauge m_brightnessCell; MessageTableCellWithSwitch m_popUpCell; SelectableTableView m_selectableTableView; - PreferencesController m_preferencesController; - DisplayModeController m_displayModeController; + MathOptionsController m_mathOptionsController; LanguageController m_languageController; AccessibilityController m_accessibilityController; ExamModeController m_examModeController; diff --git a/apps/settings/sub_menu/math_options_controller.cpp b/apps/settings/sub_menu/math_options_controller.cpp new file mode 100644 index 000000000..cf9e81ce8 --- /dev/null +++ b/apps/settings/sub_menu/math_options_controller.cpp @@ -0,0 +1,73 @@ +#include "math_options_controller.h" +#include +#include "../../global_preferences.h" + +using namespace Poincare; + +namespace Settings { + +MathOptionsController::MathOptionsController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate) : + GenericSubController(parentResponder), + m_preferencesController(this), + m_displayModeController(this, inputEventHandlerDelegate) +{ + for (int i = 0; i < k_totalNumberOfCell; i++) { + m_cells[i].setMessageFont(KDFont::LargeFont); + } +} + +bool MathOptionsController::handleEvent(Ion::Events::Event event) { + if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { + GenericSubController * subController = nullptr; + if (m_messageTreeModel->children(selectedRow())->label() == I18n::Message::DisplayMode) + subController = &m_displayModeController; + else + subController = &m_preferencesController; + subController->setMessageTreeModel(m_messageTreeModel->children(selectedRow())); + StackViewController * stack = stackController(); + stack->push(subController); + return true; + } + return GenericSubController::handleEvent(event); +} + +HighlightCell * MathOptionsController::reusableCell(int index, int type) { + assert(type == 0); + assert(index >= 0 && index < k_totalNumberOfCell); + return &m_cells[index]; +} + +int MathOptionsController::reusableCellCount(int type) { + assert(type == 0); + return k_totalNumberOfCell; +} + +void MathOptionsController::willDisplayCellForIndex(HighlightCell * cell, int index) { + MessageTableCellWithChevronAndMessage * myTextCell = (MessageTableCellWithChevronAndMessage *)cell; + Preferences * preferences = Preferences::sharedPreferences(); + I18n::Message thisLabel = m_messageTreeModel->children(index)->label(); + myTextCell->setMessage(thisLabel); + + //add text for preferences + int childIndex = -1; + switch (thisLabel) { + case I18n::Message::AngleUnit: + childIndex = (int)preferences->angleUnit(); + break; + case I18n::Message::DisplayMode: + childIndex = (int)preferences->displayMode(); + break; + case I18n::Message::EditionMode: + childIndex = (int)preferences->editionMode(); + break; + case I18n::Message::ComplexFormat: + childIndex = (int)preferences->complexFormat(); + break; + default: + break; + } + I18n::Message message = childIndex >= 0 ? m_messageTreeModel->children(index)->children(childIndex)->label() : I18n::Message::Default; + myTextCell->setSubtitle(message); +} + +} diff --git a/apps/settings/sub_menu/math_options_controller.h b/apps/settings/sub_menu/math_options_controller.h new file mode 100644 index 000000000..bf592893b --- /dev/null +++ b/apps/settings/sub_menu/math_options_controller.h @@ -0,0 +1,27 @@ +#ifndef SETTINGS_MATH_OPTIONS_CONTROLLER_H +#define SETTINGS_MATH_OPTIONS_CONTROLLER_H + +#include "generic_sub_controller.h" +#include +#include "display_mode_controller.h" +#include "preferences_controller.h" + +namespace Settings { + +class MathOptionsController : public GenericSubController { +public: + MathOptionsController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate); + bool handleEvent(Ion::Events::Event event) override; + HighlightCell * reusableCell(int index, int type) override; + int reusableCellCount(int type) override; + void willDisplayCellForIndex(HighlightCell * cell, int index) override; +private: + constexpr static int k_totalNumberOfCell = 4; + MessageTableCellWithChevronAndMessage m_cells[k_totalNumberOfCell]; + PreferencesController m_preferencesController; + DisplayModeController m_displayModeController; +}; + +} + +#endif