[apps/settings/exam_mode] "How to deactivate" messages

This commit is contained in:
Léa Saviot
2020-01-15 16:08:41 +01:00
parent a51d434a78
commit 22601fd8a3
7 changed files with 87 additions and 0 deletions

View File

@@ -10,6 +10,9 @@ ExamMode = "Testmodus"
ActivateExamMode = "Starten Testmodus"
ExamModeActive = "Wieder starten Testmodus"
ActivateDutchExamMode = "Activate Dutch exam mode"
ToDeactivateExamMode1 = "Um den Testmodus auszuschalten,"
ToDeactivateExamMode2 = "schließen Sie den Rechner an einen"
ToDeactivateExamMode3 = "Computer oder eine Steckdose an."
About = "Über"
Degrees = "Grad "
Gradians = "Gone "

View File

@@ -10,6 +10,9 @@ ExamMode = "Exam mode"
ActivateExamMode = "Activate exam mode"
ExamModeActive = "Reactivate exam mode"
ActivateDutchExamMode = "Activate Dutch exam mode"
ToDeactivateExamMode1 = "To deactivate the exam mode,"
ToDeactivateExamMode2 = "plug the calculator to a computer"
ToDeactivateExamMode3 = "or to a power socket."
About = "About"
Degrees = "Degrees "
Gradians = "Gradians "

View File

@@ -10,6 +10,9 @@ ExamMode = "Modo examen"
ActivateExamMode = "Activar el modo examen"
ExamModeActive = "Reactivar el modo examen"
ActivateDutchExamMode = "Activate Dutch exam mode"
ToDeactivateExamMode1 = "Para desactivar el modo examen,"
ToDeactivateExamMode2 = "conecte la calculadora a un ordenador"
ToDeactivateExamMode3 = "o a un enchufe eléctrico."
About = "Acerca"
Degrees = "Grados "
Gradians = "Gradianes "

View File

@@ -10,6 +10,9 @@ ExamMode = "Mode examen"
ActivateExamMode = "Activer le mode examen"
ExamModeActive = "Réactiver le mode examen"
ActivateDutchExamMode = "Activate Dutch exam mode"
ToDeactivateExamMode1 = "Pour désactiver le mode examen,"
ToDeactivateExamMode2 = "brancher la calculatrice à un"
ToDeactivateExamMode3 = "ordinateur ou à une prise de courant."
About = "À propos"
Degrees = "Degrés "
Gradians = "Grades "

View File

@@ -10,6 +10,9 @@ ExamMode = "Modo de exame"
ActivateExamMode = "Ativar o modo de exame"
ExamModeActive = "Reativar o modo de exame"
ActivateDutchExamMode = "Activate Dutch exam mode"
ToDeactivateExamMode1 = "Para desativar o modo de exame,"
ToDeactivateExamMode2 = "ligue a calculadora a um computador"
ToDeactivateExamMode3 = "ou a uma tomada eléctrica."
About = "Acerca"
Degrees = "Graus "
Gradians = "Grados "

View File

@@ -10,8 +10,58 @@ using namespace Shared;
namespace Settings {
ExamModeController::ContentView::ContentView(SelectableTableView * selectableTableView) :
m_selectableTableView(selectableTableView),
m_deactivateLine1(KDFont::SmallFont, I18n::Message::ToDeactivateExamMode1, 0.5f, 0.5f, KDColorBlack, Palette::WallScreen),
m_deactivateLine2(KDFont::SmallFont, I18n::Message::ToDeactivateExamMode2, 0.5f, 0.5f, KDColorBlack, Palette::WallScreen),
m_deactivateLine3(KDFont::SmallFont, I18n::Message::ToDeactivateExamMode3, 0.5f, 0.5f, KDColorBlack, Palette::WallScreen)
{
}
void ExamModeController::ContentView::drawRect(KDContext * ctx, KDRect rect) const {
ctx->fillRect(bounds(), Palette::WallScreen);
}
View * ExamModeController::ContentView::subviewAtIndex(int index) {
assert(index >= 0 && index < 4);
if (index == 0) {
return m_selectableTableView;
}
assert(shouldDisplayDeactivateMessages());
if (index == 1) {
return &m_deactivateLine1;
}
if (index == 2) {
return &m_deactivateLine2;
}
return &m_deactivateLine3;
}
void ExamModeController::ContentView::layoutSubviews(bool force) {
// Layout the table view
KDCoordinate tableHeight = m_selectableTableView->minimalSizeForOptimalDisplay().height();
m_selectableTableView->setFrame(KDRect(0, 0, bounds().width(), tableHeight), force);
if (!shouldDisplayDeactivateMessages()) {
return;
}
// Layout the text
KDCoordinate textHeight = KDFont::SmallFont->glyphSize().height();
KDCoordinate defOrigin = tableHeight + (bounds().height() - tableHeight - 3*textHeight - Metric::CommonTopMargin)/2;
m_deactivateLine1.setFrame(KDRect(0, defOrigin, bounds().width(), textHeight), force);
m_deactivateLine2.setFrame(KDRect(0, defOrigin + textHeight, bounds().width(), textHeight), force);
m_deactivateLine3.setFrame(KDRect(0, defOrigin + 2 * textHeight, bounds().width(), textHeight), force);
}
bool ExamModeController::ContentView::shouldDisplayDeactivateMessages() const {
return GlobalPreferences::sharedGlobalPreferences()->isInExamMode();
}
ExamModeController::ExamModeController(Responder * parentResponder) :
GenericSubController(parentResponder),
m_contentView(&m_selectableTableView),
m_cell{MessageTableCell(I18n::Message::ExamModeActive, KDFont::LargeFont), MessageTableCell(I18n::Message::ActivateDutchExamMode, KDFont::LargeFont)}
{
}
@@ -41,6 +91,11 @@ bool ExamModeController::handleEvent(Ion::Events::Event event) {
return GenericSubController::handleEvent(event);
}
void ExamModeController::didEnterResponderChain(Responder * previousFirstResponder) {
GenericSubController::didEnterResponderChain(previousFirstResponder);
m_contentView.layoutSubviews(true);
}
int ExamModeController::numberOfRows() const {
if (GlobalPreferences::sharedGlobalPreferences()->language() != I18n::Language::EN || GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) {
return 1;

View File

@@ -8,14 +8,31 @@ namespace Settings {
class ExamModeController : public GenericSubController {
public:
ExamModeController(Responder * parentResponder);
View * view() override { return &m_contentView; }
bool handleEvent(Ion::Events::Event event) override;
void didEnterResponderChain(Responder * previousFirstResponder) override;
int numberOfRows() const override;
HighlightCell * reusableCell(int index, int type) override;
int reusableCellCount(int type) override;
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
private:
class ContentView : public View {
public:
ContentView(SelectableTableView * selectableTableView);
void drawRect(KDContext * ctx, KDRect rect) const override;
void layoutSubviews(bool force = false) override;
private:
bool shouldDisplayDeactivateMessages() const;
int numberOfSubviews() const override { return 1 + (shouldDisplayDeactivateMessages() ? 3 : 0); }
View * subviewAtIndex(int index) override;
SelectableTableView * m_selectableTableView;
MessageTextView m_deactivateLine1;
MessageTextView m_deactivateLine2;
MessageTextView m_deactivateLine3;
};
int initialSelectedRow() const override;
static constexpr int k_maxNumberOfCells = 2;
ContentView m_contentView;
MessageTableCell m_cell[k_maxNumberOfCells];
};