mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps] Use the shared language controller in the settings app
This commit is contained in:
committed by
EmilieNumworks
parent
cb097abe95
commit
bcdad4a5f9
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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\
|
||||
|
||||
13
apps/settings/language_controller.cpp
Normal file
13
apps/settings/language_controller.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "language_controller.h"
|
||||
|
||||
namespace Settings {
|
||||
|
||||
bool LanguageController::handleEvent(Ion::Events::Event event) {
|
||||
if (Shared::LanguageController::handleEvent(event)) {
|
||||
static_cast<StackViewController *>(parentResponder())->pop();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
17
apps/settings/language_controller.h
Normal file
17
apps/settings/language_controller.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef SETTINGS_LANGUAGE_CONTROLLER_H
|
||||
#define SETTINGS_LANGUAGE_CONTROLLER_H
|
||||
|
||||
#include <escher.h>
|
||||
#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
|
||||
@@ -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<MessageTableCellWithChevronAndMessage *>(cell);
|
||||
myTextCell->setSubtitle(languages[index]);
|
||||
return;
|
||||
}
|
||||
#if OS_WITH_SOFTWARE_UPDATE_PROMPT
|
||||
if (index == 6) {
|
||||
MessageTableCellWithSwitch * mySwitchCell = (MessageTableCellWithSwitch *)cell;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <escher.h>
|
||||
#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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user