From ef8cd53cec87d9cb7be84d30f07d5b3e411dc566 Mon Sep 17 00:00:00 2001 From: M4x1m3 Date: Sun, 15 Dec 2019 09:26:07 +0100 Subject: [PATCH 1/2] [apps/title bar] Added indicator for symbolic calculation in exam mode. --- apps/shared.de.i18n | 1 + apps/shared.en.i18n | 1 + apps/shared.es.i18n | 1 + apps/shared.fr.i18n | 1 + apps/shared.pt.i18n | 1 + apps/title_bar_view.cpp | 11 ++++++++++- 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/shared.de.i18n b/apps/shared.de.i18n index 6309dac2a..386c32c9a 100644 --- a/apps/shared.de.i18n +++ b/apps/shared.de.i18n @@ -61,6 +61,7 @@ StorageMemoryFull1 = "Der Speicher ist voll. Löschen Sie" StorageMemoryFull2 = "von Daten und versuchen Sie es erneut." StoreExpressionNotAllowed = "'store' ist verboten" SyntaxError = "Syntaxfehler" +Sym = "sym" TEnd = "T Endwert" ThetaEnd = "θ Endwert" ThetaStart = "θ Startwert" diff --git a/apps/shared.en.i18n b/apps/shared.en.i18n index 952b615b8..abefd01cf 100644 --- a/apps/shared.en.i18n +++ b/apps/shared.en.i18n @@ -61,6 +61,7 @@ Step = "Step" StorageMemoryFull1 = "The memory is full." StorageMemoryFull2 = "Erase data and try again." SyntaxError = "Syntax error" +Sym = "sym" TEnd = "T end" ThetaEnd = "θ end" ThetaStart = "θ start" diff --git a/apps/shared.es.i18n b/apps/shared.es.i18n index 53570691e..fb670a6a9 100644 --- a/apps/shared.es.i18n +++ b/apps/shared.es.i18n @@ -61,6 +61,7 @@ StorageMemoryFull1 = "La memoria está llena." StorageMemoryFull2 = "Borre datos e intente de nuevo." StoreExpressionNotAllowed = "'store' no está permitido" SyntaxError = "Error sintáctico" +Sym = "sim" TEnd = "T fin" ThetaEnd = "θ fin" ThetaStart = "θ inicio" diff --git a/apps/shared.fr.i18n b/apps/shared.fr.i18n index 15e2d760c..30c3c7f1c 100644 --- a/apps/shared.fr.i18n +++ b/apps/shared.fr.i18n @@ -61,6 +61,7 @@ StorageMemoryFull1 = "La mémoire est pleine." StorageMemoryFull2 = "Effacez des données et réessayez." StoreExpressionNotAllowed = "'store' n'est pas autorisé" SyntaxError = "Attention à la syntaxe" +Sym = "sym" TEnd = "T fin" ThetaEnd = "θ fin" ThetaStart = "θ début" diff --git a/apps/shared.pt.i18n b/apps/shared.pt.i18n index 9d624d78d..be721eb4e 100644 --- a/apps/shared.pt.i18n +++ b/apps/shared.pt.i18n @@ -61,6 +61,7 @@ StorageMemoryFull1 = "A memoria esta cheia." StorageMemoryFull2 = "Apage dados e tente novamente." StoreExpressionNotAllowed = "'store' não está permitido" SyntaxError = "Erro de sintaxe" +Sym = "sim" TEnd = "T fim" ThetaEnd = "θ fim" ThetaStart = "θ inicio" diff --git a/apps/title_bar_view.cpp b/apps/title_bar_view.cpp index d1f2ce4de..8e64ba19e 100644 --- a/apps/title_bar_view.cpp +++ b/apps/title_bar_view.cpp @@ -85,6 +85,14 @@ void TitleBarView::refreshPreferences() { char buffer[bufferSize]; int numberOfChar = 0; Preferences * preferences = Preferences::sharedPreferences(); + if (GlobalPreferences::sharedGlobalPreferences()->examMode() && Preferences::sharedPreferences()->isExamSymbolic()) { + // Display "cas" if in exam mode with symbolic computation enabled + numberOfChar += strlcpy(buffer+numberOfChar, I18n::translate(I18n::Message::Sym), bufferSize - numberOfChar); + assert(numberOfChar < bufferSize-1); + assert(UTF8Decoder::CharSizeOfCodePoint('/') == 1); + buffer[numberOfChar++] = '/'; + } + assert(numberOfChar <= bufferSize); { // Display Sci/ or Eng/ if the print float mode is not decimal const Preferences::PrintFloatMode printFloatMode = preferences->displayMode(); @@ -93,7 +101,7 @@ void TitleBarView::refreshPreferences() { assert(printFloatMode == Preferences::PrintFloatMode::Scientific || printFloatMode == Preferences::PrintFloatMode::Engineering); I18n::Message printMessage = printFloatMode == Preferences::PrintFloatMode::Scientific ? I18n::Message::Sci : I18n::Message::Eng; - numberOfChar += strlcpy(buffer, I18n::translate(printMessage), bufferSize); + numberOfChar += strlcpy(buffer+numberOfChar, I18n::translate(printMessage), bufferSize - numberOfChar); assert(numberOfChar < bufferSize-1); assert(UTF8Decoder::CharSizeOfCodePoint('/') == 1); buffer[numberOfChar++] = '/'; @@ -108,6 +116,7 @@ void TitleBarView::refreshPreferences() { (angleUnit == Preferences::AngleUnit::Radian ? I18n::Message::Rad : I18n::Message::Gon); numberOfChar += strlcpy(buffer+numberOfChar, I18n::translate(angleMessage), bufferSize - numberOfChar); } + m_preferenceView.setText(buffer); // Layout the exam mode icon if needed layoutSubviews(); From e347dd5616ca0e8788964701203c7665455bdca2 Mon Sep 17 00:00:00 2001 From: M4x1m3 Date: Sun, 15 Dec 2019 10:32:43 +0100 Subject: [PATCH 2/2] [preferences/exam] Allowed reactivation of exam mode Settings are not modifiable when reactiving exam mode. Decided to do it like that for consistency with the TI-Nspire CAS models. Should be ok with exam mode specs (at least for france). --- apps/settings/sub_menu/exam_mode_controller.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/settings/sub_menu/exam_mode_controller.cpp b/apps/settings/sub_menu/exam_mode_controller.cpp index 426bb9fc8..5e4bbf10b 100644 --- a/apps/settings/sub_menu/exam_mode_controller.cpp +++ b/apps/settings/sub_menu/exam_mode_controller.cpp @@ -28,6 +28,8 @@ bool ExamModeController::handleEvent(Ion::Events::Event event) { I18n::Message childLabel = m_messageTreeModel->children(selectedRow())->label(); if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) { if (GlobalPreferences::sharedGlobalPreferences()->examMode()) { + if (childLabel == I18n::Message::ActivateExamMode || childLabel == I18n::Message::ExamModeActive) + AppsContainer::sharedAppsContainer()->displayExamModePopUp(true); return true; } if (childLabel == I18n::Message::ActivateExamMode || childLabel == I18n::Message::ExamModeActive) {