Files
Upsilon/apps/on_boarding/language_controller.cpp
Émilie Feral 442fe1e75d [apps] Add a macro SOFTWARE_NEEDS_UPDATE
Change-Id: I70b0dd29455e0bcf84ba73ff31e8adb93f2c843a
2017-06-16 14:01:29 +02:00

75 lines
2.3 KiB
C++

#include "language_controller.h"
#include "../global_preferences.h"
#include "../apps_container.h"
namespace OnBoarding {
LanguageController::LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController) :
ViewController(parentResponder),
m_logoController(logoController),
#if SOFTWARE_NEEDS_UPDATE
m_updateController(updateController),
#endif
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);
}
}
View * LanguageController::view() {
return &m_selectableTableView;
}
void LanguageController::reinitOnBoarding() {
m_selectableTableView.deselectTable();
selectCellAtLocation(0, 0);
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 SOFTWARE_NEEDS_UPDATE
app()->displayModalViewController(m_updateController, 0.5f, 0.5f);
#else
AppsContainer * appsContainer = (AppsContainer *)app()->container();
appsContainer->refreshPreferences();
appsContainer->switchTo(appsContainer->appSnapshotAtIndex(0));
#endif
return true;
}
if (event == Ion::Events::Back) {
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]);
}
}