diff --git a/apps/global_preferences.cpp b/apps/global_preferences.cpp index c666ba17a..6590d20a6 100644 --- a/apps/global_preferences.cpp +++ b/apps/global_preferences.cpp @@ -3,7 +3,7 @@ static GlobalPreferences s_globalPreferences; GlobalPreferences::GlobalPreferences() : - m_language(I18n::Language::French), + m_language(I18n::Language::English), m_examMode(ExamMode::Desactivate), m_showUpdatePopUp(true), m_brightnessLevel(Ion::Backlight::MaxBrightness) diff --git a/apps/on_boarding/language_controller.cpp b/apps/on_boarding/language_controller.cpp index 5dec29776..ee30052e7 100644 --- a/apps/on_boarding/language_controller.cpp +++ b/apps/on_boarding/language_controller.cpp @@ -5,7 +5,7 @@ namespace OnBoarding { LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController) : - Shared::LanguageController(parentResponder), + Shared::LanguageController(parentResponder, (Ion::Display::Height - I18n::NumberOfLanguages*Metric::ParameterCellHeight)/2), #if OS_WITH_SOFTWARE_UPDATE_PROMPT m_updateController(updateController), #endif diff --git a/apps/settings/Makefile b/apps/settings/Makefile index 800f6c6bb..404c73890 100644 --- a/apps/settings/Makefile +++ b/apps/settings/Makefile @@ -3,6 +3,7 @@ snapshot_headers += apps/settings/app.h app_objs += $(addprefix apps/settings/,\ app.o\ + language_controller.o\ main_controller.o\ settings_node.o\ sub_controller.o\ diff --git a/apps/settings/language_controller.cpp b/apps/settings/language_controller.cpp new file mode 100644 index 000000000..a34893546 --- /dev/null +++ b/apps/settings/language_controller.cpp @@ -0,0 +1,13 @@ +#include "language_controller.h" + +namespace Settings { + +bool LanguageController::handleEvent(Ion::Events::Event event) { + if (Shared::LanguageController::handleEvent(event)) { + static_cast(parentResponder())->pop(); + return true; + } + return false; +} + +} diff --git a/apps/settings/language_controller.h b/apps/settings/language_controller.h new file mode 100644 index 000000000..92367959c --- /dev/null +++ b/apps/settings/language_controller.h @@ -0,0 +1,17 @@ +#ifndef SETTINGS_LANGUAGE_CONTROLLER_H +#define SETTINGS_LANGUAGE_CONTROLLER_H + +#include +#include "../shared/language_controller.h" + +namespace Settings { + +class LanguageController : public Shared::LanguageController { +public: + using Shared::LanguageController::LanguageController; + bool handleEvent(Ion::Events::Event event) override; +}; + +} + +#endif diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index fc915213c..bcb1658a4 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -13,7 +13,6 @@ namespace Settings { const SettingsNode angleChildren[2] = {SettingsNode(I18n::Message::Degres), SettingsNode(I18n::Message::Radian)}; const SettingsNode FloatDisplayModeChildren[2] = {SettingsNode(I18n::Message::Auto), SettingsNode(I18n::Message::Scientific)}; const SettingsNode complexFormatChildren[2] = {SettingsNode(I18n::Message::Default), SettingsNode(I18n::Message::Default)}; -const SettingsNode languageChildren[I18n::NumberOfLanguages] = {SettingsNode(I18n::Message::English), SettingsNode(I18n::Message::French), SettingsNode(I18n::Message::Spanish), SettingsNode(I18n::Message::German), SettingsNode(I18n::Message::Portuguese)}; const SettingsNode examChildren[1] = {SettingsNode(I18n::Message::ActivateExamMode)}; const SettingsNode aboutChildren[3] = {SettingsNode(I18n::Message::SoftwareVersion), SettingsNode(I18n::Message::SerialNumber), SettingsNode(I18n::Message::FccId)}; @@ -23,7 +22,7 @@ const SettingsNode menu[8] = const SettingsNode menu[7] = #endif {SettingsNode(I18n::Message::AngleUnit, angleChildren, 2), SettingsNode(I18n::Message::DisplayMode, FloatDisplayModeChildren, 2), SettingsNode(I18n::Message::ComplexFormat, complexFormatChildren, 2), - SettingsNode(I18n::Message::Brightness), SettingsNode(I18n::Message::Language, languageChildren, I18n::NumberOfLanguages), SettingsNode(I18n::Message::ExamMode, examChildren, 1), + SettingsNode(I18n::Message::Brightness), SettingsNode(I18n::Message::Language), SettingsNode(I18n::Message::ExamMode, examChildren, 1), #if OS_WITH_SOFTWARE_UPDATE_PROMPT SettingsNode(I18n::Message::UpdatePopUp), #endif @@ -45,7 +44,8 @@ MainController::MainController(Responder * parentResponder) : m_selectableTableView(this, this, 0, 1, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this), m_nodeModel((Node *)&model), - m_subController(this) + m_subController(this), + m_languageController(this, 13) { for (int i = 0; i < k_numberOfSimpleChevronCells; i++) { m_cells[i].setMessageFontSize(KDText::FontSize::Large); @@ -95,6 +95,13 @@ bool MainController::handleEvent(Ion::Events::Event event) { } return false; } + if (m_nodeModel->children(selectedRow())->label() == I18n::Message::Language) { + if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { + stackController()->push(&m_languageController); + return true; + } + return false; + } } if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { m_subController.setNodeModel(m_nodeModel->children(selectedRow())); @@ -188,6 +195,13 @@ void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) { myGauge->setLevel((float)GlobalPreferences::sharedGlobalPreferences()->brightnessLevel()/(float)Ion::Backlight::MaxBrightness); return; } + if (index == 4) { + I18n::Message languages[I18n::NumberOfLanguages] = {I18n::Message::English, I18n::Message::French, I18n::Message::Spanish, I18n::Message::German, I18n::Message::Portuguese}; + int index = (int)GlobalPreferences::sharedGlobalPreferences()->language()-1; + MessageTableCellWithChevronAndMessage * myTextCell = static_cast(cell); + myTextCell->setSubtitle(languages[index]); + return; + } #if OS_WITH_SOFTWARE_UPDATE_PROMPT if (index == 6) { MessageTableCellWithSwitch * mySwitchCell = (MessageTableCellWithSwitch *)cell; diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index d114e4aab..7613b2ffb 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -4,6 +4,7 @@ #include #include "sub_controller.h" #include "settings_node.h" +#include "language_controller.h" namespace Settings { @@ -44,6 +45,7 @@ private: SelectableTableView m_selectableTableView; Node * m_nodeModel; SubController m_subController; + LanguageController m_languageController; }; } diff --git a/apps/settings/sub_controller.cpp b/apps/settings/sub_controller.cpp index b6c1b7115..2a9aea5fe 100644 --- a/apps/settings/sub_controller.cpp +++ b/apps/settings/sub_controller.cpp @@ -193,11 +193,6 @@ void SubController::setPreferenceWithValueIndex(I18n::Message message, int value if (message == I18n::Message::ComplexFormat) { Preferences::sharedPreferences()->setComplexFormat((Expression::ComplexFormat)valueIndex); } - if (message == I18n::Message::Language) { - GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)(valueIndex+1)); - AppsContainer * appsContainer = (AppsContainer *)app()->container(); - appsContainer->reloadTitleBar(); - } } int SubController::valueIndexForPreference(I18n::Message message) { @@ -210,9 +205,6 @@ int SubController::valueIndexForPreference(I18n::Message message) { if (message == I18n::Message::ComplexFormat) { return (int)Preferences::sharedPreferences()->complexFormat(); } - if (message == I18n::Message::Language) { - return (int)GlobalPreferences::sharedGlobalPreferences()->language()-1; - } return 0; } diff --git a/apps/shared/language_controller.cpp b/apps/shared/language_controller.cpp index 1b6f478bf..683e86cd1 100644 --- a/apps/shared/language_controller.cpp +++ b/apps/shared/language_controller.cpp @@ -4,9 +4,9 @@ namespace Shared { -LanguageController::LanguageController(Responder * parentResponder) : +LanguageController::LanguageController(Responder * parentResponder, KDCoordinate topMargin) : ViewController(parentResponder), - m_selectableTableView(this, this, 0, 1, (Ion::Display::Height - I18n::NumberOfLanguages*Metric::ParameterCellHeight)/2, Metric::CommonRightMargin, 0, Metric::CommonLeftMargin, this) + m_selectableTableView(this, this, 0, 1, topMargin, Metric::CommonRightMargin, 0, Metric::CommonLeftMargin, this) { for (int i = 0; i < I18n::NumberOfLanguages; i++) { m_cells[i].setMessageFontSize(KDText::FontSize::Large); @@ -15,7 +15,12 @@ LanguageController::LanguageController(Responder * parentResponder) : void LanguageController::resetSelection() { m_selectableTableView.deselectTable(); - selectCellAtLocation(0, 0); + int index = (int)GlobalPreferences::sharedGlobalPreferences()->language()-1; + selectCellAtLocation(0, index); +} + +const char * LanguageController::title() { + return I18n::translate(I18n::Message::Language); } View * LanguageController::view() { @@ -26,6 +31,10 @@ void LanguageController::didBecomeFirstResponder() { app()->setFirstResponder(&m_selectableTableView); } +void LanguageController::viewWillAppear() { + resetSelection(); +} + bool LanguageController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::OK || event == Ion::Events::EXE) { GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)(selectedRow()+1)); diff --git a/apps/shared/language_controller.h b/apps/shared/language_controller.h index 7df9a523b..5dda27fac 100644 --- a/apps/shared/language_controller.h +++ b/apps/shared/language_controller.h @@ -8,11 +8,13 @@ namespace Shared { class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: - LanguageController(Responder * parentResponder); + LanguageController(Responder * parentResponder, KDCoordinate topMargin); void resetSelection(); View * view() override; + const char * title() override; void didBecomeFirstResponder() override; + void viewWillAppear() override; bool handleEvent(Ion::Events::Event event) override; int numberOfRows() override;