diff --git a/apps/atom b/apps/atom index dd990a490..8f710a9d3 160000 --- a/apps/atom +++ b/apps/atom @@ -1 +1 @@ -Subproject commit dd990a49000afee1f27a513ae172d2fcb5cea55b +Subproject commit 8f710a9d3fa4daedde14ba489e418dbac5d590c5 diff --git a/apps/calculation/app.cpp b/apps/calculation/app.cpp index 8947c679e..8f4fd1459 100644 --- a/apps/calculation/app.cpp +++ b/apps/calculation/app.cpp @@ -17,8 +17,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::CalculAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/calculation/app.h b/apps/calculation/app.h index 28293bf3b..ee12934c7 100644 --- a/apps/calculation/app.h +++ b/apps/calculation/app.h @@ -15,7 +15,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/code/app.cpp b/apps/code/app.cpp index 26d276627..9de25b735 100644 --- a/apps/code/app.cpp +++ b/apps/code/app.cpp @@ -14,8 +14,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::CodeAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::BasicExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Basic; } const Image * App::Descriptor::icon() { diff --git a/apps/code/app.h b/apps/code/app.h index 10a82926f..2deeb7f03 100644 --- a/apps/code/app.h +++ b/apps/code/app.h @@ -18,7 +18,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/exam_mode_configuration.h b/apps/exam_mode_configuration.h index 695c2b249..e269ede0f 100644 --- a/apps/exam_mode_configuration.h +++ b/apps/exam_mode_configuration.h @@ -22,7 +22,7 @@ I18n::Message examModeActivationWarningMessage(GlobalPreferences::ExamMode mode, // Exam mode behaviour KDColor examModeColor(GlobalPreferences::ExamMode mode); -bool appIsForbiddenInExamMode(I18n::Message appName, GlobalPreferences::ExamMode mode); +bool appIsForbiddenInExamMode(App::Descriptor::ExaminationLevel appExaminationLevel, GlobalPreferences::ExamMode mode); bool exactExpressionsAreForbidden(GlobalPreferences::ExamMode mode); } diff --git a/apps/exam_mode_configuration_non_official.cpp b/apps/exam_mode_configuration_non_official.cpp index 01307ecec..d22a24913 100644 --- a/apps/exam_mode_configuration_non_official.cpp +++ b/apps/exam_mode_configuration_non_official.cpp @@ -58,10 +58,13 @@ KDColor ExamModeConfiguration::examModeColor(GlobalPreferences::ExamMode mode) { } } -bool ExamModeConfiguration::appIsForbiddenInExamMode(I18n::Message appName, GlobalPreferences::ExamMode mode) { +bool ExamModeConfiguration::appIsForbiddenInExamMode(App::Descriptor::ExaminationLevel appExaminationLevel, GlobalPreferences::ExamMode mode) { + if (mode == GlobalPreferences::ExamMode::NoSymNoText) { + return appExaminationLevel == App::Descriptor::ExaminationLevel::Basic; + } return false; } bool ExamModeConfiguration::exactExpressionsAreForbidden(GlobalPreferences::ExamMode mode) { - return false; + return mode == GlobalPreferences::ExamMode::NoSymNoText ? true : false; } diff --git a/apps/exam_mode_configuration_official.cpp b/apps/exam_mode_configuration_official.cpp deleted file mode 100644 index 7640d21e6..000000000 --- a/apps/exam_mode_configuration_official.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: CC-BY-NC-ND-4.0 -// Caution: Dutch exam mode is subject to a compliance certification by a government agency. Distribution of a non-certified Dutch exam mode is illegal. - -#include "exam_mode_configuration.h" - -constexpr Shared::SettingsMessageTree ExamModeConfiguration::s_modelExamChildren[2] = {Shared::SettingsMessageTree(I18n::Message::ActivateExamMode), Shared::SettingsMessageTree(I18n::Message::ActivateDutchExamMode)}; - -int ExamModeConfiguration::numberOfAvailableExamMode() { - if ((GlobalPreferences::sharedGlobalPreferences()->language() != I18n::Language::EN - && GlobalPreferences::sharedGlobalPreferences()->language() != I18n::Language::NL) - || GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) - { - return 1; - } - return 2; -} - -GlobalPreferences::ExamMode ExamModeConfiguration::examModeAtIndex(int index) { - return index == 0 ? GlobalPreferences::ExamMode::Standard : GlobalPreferences::ExamMode::Dutch; -} - -I18n::Message ExamModeConfiguration::examModeActivationMessage(int index) { - return index == 0 ? I18n::Message::ActivateExamMode : I18n::Message::ActivateDutchExamMode; -} - -I18n::Message ExamModeConfiguration::examModeActivationWarningMessage(GlobalPreferences::ExamMode mode, int line) { - if (mode == GlobalPreferences::ExamMode::Off) { - I18n::Message warnings[] = {I18n::Message::ExitExamMode1, I18n::Message::ExitExamMode2, I18n::Message::Default}; - return warnings[line]; - } else if (mode == GlobalPreferences::ExamMode::Standard) { - I18n::Message warnings[] = {I18n::Message::ActiveExamModeMessage1, I18n::Message::ActiveExamModeMessage2, I18n::Message::ActiveExamModeMessage3}; - return warnings[line]; - } - assert(mode == GlobalPreferences::ExamMode::Dutch); - I18n::Message warnings[] = {I18n::Message::ActiveDutchExamModeMessage1, I18n::Message::ActiveDutchExamModeMessage2, I18n::Message::ActiveDutchExamModeMessage3}; - return warnings[line]; -} - -KDColor ExamModeConfiguration::examModeColor(GlobalPreferences::ExamMode mode) { - /* The Dutch exam mode LED is supposed to be orange but we can only make - * blink "pure" colors: with RGB leds on or off (as the PWM is used for - * blinking). The closest "pure" color is Yellow. Moreover, Orange LED is - * already used when the battery is charging. Using yellow, we can assert - * that the yellow LED only means that Dutch exam mode is on and avoid - * confusing states when the battery is charging and states when the Dutch - * exam mode is on. */ - return mode == GlobalPreferences::ExamMode::Dutch ? KDColorYellow : KDColorRed; -} - -bool ExamModeConfiguration::appIsForbiddenInExamMode(I18n::Message appName, GlobalPreferences::ExamMode mode) { - return appName == I18n::Message::CodeApp && mode == GlobalPreferences::ExamMode::Dutch; -} - -bool ExamModeConfiguration::exactExpressionsAreForbidden(GlobalPreferences::ExamMode mode) { - return mode == GlobalPreferences::ExamMode::Dutch; -} diff --git a/apps/external/app.cpp b/apps/external/app.cpp index 81d39e354..fba8ffccc 100644 --- a/apps/external/app.cpp +++ b/apps/external/app.cpp @@ -12,8 +12,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::ExternalAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::BasicExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Basic; } const Image * App::Descriptor::icon() { diff --git a/apps/external/app.h b/apps/external/app.h index 887c96e1c..01ddaa800 100644 --- a/apps/external/app.h +++ b/apps/external/app.h @@ -12,7 +12,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/graph/app.cpp b/apps/graph/app.cpp index c440a74ca..a856c2c1a 100644 --- a/apps/graph/app.cpp +++ b/apps/graph/app.cpp @@ -16,8 +16,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::FunctionAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/graph/app.h b/apps/graph/app.h index 94a2c778e..f92557329 100644 --- a/apps/graph/app.h +++ b/apps/graph/app.h @@ -17,7 +17,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public Shared::FunctionApp::Snapshot { diff --git a/apps/home/controller.cpp b/apps/home/controller.cpp index 62ae15554..2faa2e488 100644 --- a/apps/home/controller.cpp +++ b/apps/home/controller.cpp @@ -97,7 +97,7 @@ bool Controller::handleEvent(Ion::Events::Event event) { } else { #endif ::App::Snapshot * selectedSnapshot = container->appSnapshotAtIndex(index); - if (ExamModeConfiguration::appIsForbiddenInExamMode(selectedSnapshot->descriptor()->name(), GlobalPreferences::sharedGlobalPreferences()->examMode())) { + if (ExamModeConfiguration::appIsForbiddenInExamMode(selectedSnapshot->descriptor()->examinationLevel(), GlobalPreferences::sharedGlobalPreferences()->examMode())) { App::app()->displayWarning(I18n::Message::ForbidenAppInExamMode1, I18n::Message::ForbidenAppInExamMode2); } else { bool switched = container->switchTo(selectedSnapshot); diff --git a/apps/probability/app.cpp b/apps/probability/app.cpp index 283b5a5d5..56fe17b42 100644 --- a/apps/probability/app.cpp +++ b/apps/probability/app.cpp @@ -15,8 +15,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::ProbaAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/probability/app.h b/apps/probability/app.h index d669d1254..be6fb5c78 100644 --- a/apps/probability/app.h +++ b/apps/probability/app.h @@ -27,7 +27,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/regression/app.cpp b/apps/regression/app.cpp index 53ecf1481..0bef9c82b 100644 --- a/apps/regression/app.cpp +++ b/apps/regression/app.cpp @@ -15,8 +15,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::RegressionAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/regression/app.h b/apps/regression/app.h index b53a16868..c00e8b4ad 100644 --- a/apps/regression/app.h +++ b/apps/regression/app.h @@ -17,7 +17,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot, public TabViewDataSource { diff --git a/apps/rpn b/apps/rpn index 923fd2de5..279ec6333 160000 --- a/apps/rpn +++ b/apps/rpn @@ -1 +1 @@ -Subproject commit 923fd2de53e2c88211f09d4b7b3d3296fef48cf6 +Subproject commit 279ec6333ab15e08988dff66eea01c6fdaee4ea0 diff --git a/apps/sequence/app.cpp b/apps/sequence/app.cpp index fc68fad5d..d9d20f78c 100644 --- a/apps/sequence/app.cpp +++ b/apps/sequence/app.cpp @@ -14,8 +14,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::SequenceAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/sequence/app.h b/apps/sequence/app.h index 379494ee8..12139933b 100644 --- a/apps/sequence/app.h +++ b/apps/sequence/app.h @@ -19,7 +19,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public Shared::FunctionApp::Snapshot { diff --git a/apps/settings/app.cpp b/apps/settings/app.cpp index a1c298eba..7e341c3f5 100644 --- a/apps/settings/app.cpp +++ b/apps/settings/app.cpp @@ -12,8 +12,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::SettingsAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/settings/app.h b/apps/settings/app.h index eb6b17cf1..f67e75896 100644 --- a/apps/settings/app.h +++ b/apps/settings/app.h @@ -12,7 +12,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/solver/app.cpp b/apps/solver/app.cpp index 0d50e5859..536a5a8f2 100644 --- a/apps/solver/app.cpp +++ b/apps/solver/app.cpp @@ -14,8 +14,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::SolverAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/solver/app.h b/apps/solver/app.h index 80b26be61..a181e34a7 100644 --- a/apps/solver/app.h +++ b/apps/solver/app.h @@ -16,7 +16,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot { diff --git a/apps/statistics/app.cpp b/apps/statistics/app.cpp index 3d40b76ba..2960d27f1 100644 --- a/apps/statistics/app.cpp +++ b/apps/statistics/app.cpp @@ -15,8 +15,8 @@ I18n::Message App::Descriptor::upperName() { return I18n::Message::StatsAppCapital; } -int App::Descriptor::examinationLevel() { - return App::Descriptor::StrictExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::Strict; } const Image * App::Descriptor::icon() { diff --git a/apps/statistics/app.h b/apps/statistics/app.h index 0521ac3ce..ee53af2b3 100644 --- a/apps/statistics/app.h +++ b/apps/statistics/app.h @@ -17,7 +17,7 @@ public: public: I18n::Message name() override; I18n::Message upperName() override; - int examinationLevel() override; + App::Descriptor::ExaminationLevel examinationLevel() override; const Image * icon() override; }; class Snapshot : public ::App::Snapshot, public TabViewDataSource { diff --git a/escher/include/escher/app.h b/escher/include/escher/app.h index 2c62b575d..cf73f7d6d 100644 --- a/escher/include/escher/app.h +++ b/escher/include/escher/app.h @@ -29,12 +29,13 @@ public: public: virtual I18n::Message name() { return (I18n::Message)0; } virtual I18n::Message upperName() { return (I18n::Message)0; } - virtual int examinationLevel(); + enum class ExaminationLevel { + No= 0, + Basic = 1, + Strict = 2, + }; + virtual ExaminationLevel examinationLevel(); virtual const Image * icon() { return nullptr; } - - const int NoExaminationLevel = 0; - const int BasicExaminationLevel = 1; - const int StrictExaminationLevel = 2; }; class Snapshot { public: diff --git a/escher/src/app.cpp b/escher/src/app.cpp index 247c2f054..8c81084c7 100644 --- a/escher/src/app.cpp +++ b/escher/src/app.cpp @@ -5,8 +5,8 @@ extern "C" { #include } -int App::Descriptor::examinationLevel() { - return App::Descriptor::NoExaminationLevel; +App::Descriptor::ExaminationLevel App::Descriptor::examinationLevel() { + return App::Descriptor::ExaminationLevel::No; } void App::Snapshot::pack(App * app) { diff --git a/themes b/themes index 885b5bb12..d9bc63ee6 160000 --- a/themes +++ b/themes @@ -1 +1 @@ -Subproject commit 885b5bb12d0d8229ca37c90f6185853df0353d16 +Subproject commit d9bc63ee68351e2f57cbab3edcdeeca8e077c7df