diff --git a/apps/on_boarding/language_controller.cpp b/apps/on_boarding/language_controller.cpp index b7b1f7fdf..5dec29776 100644 --- a/apps/on_boarding/language_controller.cpp +++ b/apps/on_boarding/language_controller.cpp @@ -5,35 +5,21 @@ namespace OnBoarding { LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController) : - ViewController(parentResponder), - m_logoController(logoController), + Shared::LanguageController(parentResponder), #if OS_WITH_SOFTWARE_UPDATE_PROMPT m_updateController(updateController), #endif - m_selectableTableView(this, this, 0, 1, (Ion::Display::Height - I18n::NumberOfLanguages*Metric::ParameterCellHeight)/2, Metric::CommonRightMargin, 0, Metric::CommonLeftMargin, this) + m_logoController(logoController) { - for (int i = 0; i < I18n::NumberOfLanguages; i++) { - m_cells[i].setMessageFontSize(KDText::FontSize::Large); - } -} - -View * LanguageController::view() { - return &m_selectableTableView; } void LanguageController::reinitOnBoarding() { - m_selectableTableView.deselectTable(); - selectCellAtLocation(0, 0); + resetSelection(); app()->displayModalViewController(m_logoController, 0.5f, 0.5f); } -void LanguageController::didBecomeFirstResponder() { - app()->setFirstResponder(&m_selectableTableView); -} - bool LanguageController::handleEvent(Ion::Events::Event event) { - if (event == Ion::Events::OK || event == Ion::Events::EXE) { - GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)(selectedRow()+1)); + if (Shared::LanguageController::handleEvent(event)) { #if OS_WITH_SOFTWARE_UPDATE_PROMPT app()->displayModalViewController(m_updateController, 0.5f, 0.5f); #else @@ -49,26 +35,4 @@ bool LanguageController::handleEvent(Ion::Events::Event event) { return false; } -int LanguageController::numberOfRows() { - return I18n::NumberOfLanguages; -} - -KDCoordinate LanguageController::cellHeight() { - return Metric::ParameterCellHeight; -} - -HighlightCell * LanguageController::reusableCell(int index) { - return &m_cells[index]; -} - -int LanguageController::reusableCellCount() { - return I18n::NumberOfLanguages; -} - -void LanguageController::willDisplayCellForIndex(HighlightCell * cell, int index) { - MessageTableCell * myCell = (MessageTableCell *) cell; - I18n::Message languages[I18n::NumberOfLanguages] = {I18n::Message::English, I18n::Message::French, I18n::Message::Spanish, I18n::Message::German, I18n::Message::Portuguese}; - myCell->setMessage(languages[index]); -} - } diff --git a/apps/on_boarding/language_controller.h b/apps/on_boarding/language_controller.h index 482b00ceb..93ca60279 100644 --- a/apps/on_boarding/language_controller.h +++ b/apps/on_boarding/language_controller.h @@ -2,33 +2,22 @@ #define ON_BOARDING_LANGUAGE_CONTROLLER_H #include -#include "../i18n.h" +#include "../shared/language_controller.h" #include "logo_controller.h" #include "update_controller.h" namespace OnBoarding { -class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { +class LanguageController : public Shared::LanguageController { public: LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController); - View * view() override; void reinitOnBoarding(); - void didBecomeFirstResponder() override; bool handleEvent(Ion::Events::Event event) override; - - int numberOfRows() override; - KDCoordinate cellHeight() override; - HighlightCell * reusableCell(int index) override; - int reusableCellCount() override; - - void willDisplayCellForIndex(HighlightCell * cell, int index) override; private: - LogoController * m_logoController; #if OS_WITH_SOFTWARE_UPDATE_PROMPT UpdateController * m_updateController; #endif - SelectableTableView m_selectableTableView; - MessageTableCell m_cells[I18n::NumberOfLanguages]; + LogoController * m_logoController; }; } diff --git a/apps/shared/Makefile b/apps/shared/Makefile index e4dcebb7f..308d4f9e7 100644 --- a/apps/shared/Makefile +++ b/apps/shared/Makefile @@ -24,6 +24,7 @@ app_objs += $(addprefix apps/shared/,\ interactive_curve_view_range_delegate.o\ interval.o\ interval_parameter_controller.o\ + language_controller.o\ list_controller.o\ list_parameter_controller.o\ memoized_curve_view_range.o\ diff --git a/apps/shared/language_controller.cpp b/apps/shared/language_controller.cpp new file mode 100644 index 000000000..1b6f478bf --- /dev/null +++ b/apps/shared/language_controller.cpp @@ -0,0 +1,59 @@ +#include "language_controller.h" +#include "../global_preferences.h" +#include "../apps_container.h" + +namespace Shared { + +LanguageController::LanguageController(Responder * parentResponder) : + ViewController(parentResponder), + 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++) { + m_cells[i].setMessageFontSize(KDText::FontSize::Large); + } +} + +void LanguageController::resetSelection() { + m_selectableTableView.deselectTable(); + selectCellAtLocation(0, 0); +} + +View * LanguageController::view() { + return &m_selectableTableView; +} + +void LanguageController::didBecomeFirstResponder() { + app()->setFirstResponder(&m_selectableTableView); +} + +bool LanguageController::handleEvent(Ion::Events::Event event) { + if (event == Ion::Events::OK || event == Ion::Events::EXE) { + GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)(selectedRow()+1)); + return true; + } + return false; +} + +int LanguageController::numberOfRows() { + return I18n::NumberOfLanguages; +} + +KDCoordinate LanguageController::cellHeight() { + return Metric::ParameterCellHeight; +} + +HighlightCell * LanguageController::reusableCell(int index) { + return &m_cells[index]; +} + +int LanguageController::reusableCellCount() { + return I18n::NumberOfLanguages; +} + +void LanguageController::willDisplayCellForIndex(HighlightCell * cell, int index) { + MessageTableCell * myCell = (MessageTableCell *) cell; + I18n::Message languages[I18n::NumberOfLanguages] = {I18n::Message::English, I18n::Message::French, I18n::Message::Spanish, I18n::Message::German, I18n::Message::Portuguese}; + myCell->setMessage(languages[index]); +} + +} diff --git a/apps/shared/language_controller.h b/apps/shared/language_controller.h new file mode 100644 index 000000000..7df9a523b --- /dev/null +++ b/apps/shared/language_controller.h @@ -0,0 +1,31 @@ +#ifndef SHARED_LANGUAGE_CONTROLLER_H +#define SHARED_LANGUAGE_CONTROLLER_H + +#include +#include "../i18n.h" + +namespace Shared { + +class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { +public: + LanguageController(Responder * parentResponder); + void resetSelection(); + + View * view() override; + void didBecomeFirstResponder() override; + bool handleEvent(Ion::Events::Event event) override; + + int numberOfRows() override; + KDCoordinate cellHeight() override; + HighlightCell * reusableCell(int index) override; + int reusableCellCount() override; + + void willDisplayCellForIndex(HighlightCell * cell, int index) override; +private: + SelectableTableView m_selectableTableView; + MessageTableCell m_cells[I18n::NumberOfLanguages]; +}; + +} + +#endif