[apps] Split on_boarding/language_controller in two

This commit is contained in:
Romain Goyet
2017-09-28 15:26:10 +02:00
committed by EmilieNumworks
parent 4e5b68b45d
commit cb097abe95
5 changed files with 98 additions and 54 deletions

View File

@@ -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]);
}
}

View File

@@ -2,33 +2,22 @@
#define ON_BOARDING_LANGUAGE_CONTROLLER_H
#include <escher.h>
#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;
};
}

View File

@@ -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\

View File

@@ -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]);
}
}

View File

@@ -0,0 +1,31 @@
#ifndef SHARED_LANGUAGE_CONTROLLER_H
#define SHARED_LANGUAGE_CONTROLLER_H
#include <escher.h>
#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