#ifndef APPS_GLOBAL_PREFERENCES_H #define APPS_GLOBAL_PREFERENCES_H #include class GlobalPreferences { public: enum class ExamMode : int8_t { Unknown = -1, Off = 0, Standard = 1, NoSym = 2, NoSymNoText = 3, Dutch = 4, }; static GlobalPreferences * sharedGlobalPreferences(); I18n::Language language() const { return m_language; } void setLanguage(I18n::Language language) { m_language = language; } I18n::Country country() const { return m_country; } void setCountry(I18n::Country country) { m_country = country; } CountryPreferences::AvailableExamModes availableExamModes() const { return I18n::CountryPreferencesArray[static_cast(m_country)].availableExamModes(); } CountryPreferences::MethodForQuartiles methodForQuartiles() const { return I18n::CountryPreferencesArray[static_cast(m_country)].methodForQuartiles(); } Poincare::Preferences::UnitFormat unitFormat() const { return I18n::CountryPreferencesArray[static_cast(m_country)].unitFormat(); } CountryPreferences::HomeAppsLayout homeAppsLayout() const { return I18n::CountryPreferencesArray[static_cast(m_country)].homeAppsLayout(); } bool isInExamMode() const { return (int8_t)examMode() > 0; } bool isInExamModeSymbolic() const { return !((int8_t)examMode() > 1); } ExamMode examMode() const; ExamMode tempExamMode() const; void setExamMode(ExamMode examMode); void setTempExamMode(ExamMode examMode); bool showPopUp() const { return m_showPopUp; } void setShowPopUp(bool showPopUp) { m_showPopUp = showPopUp; } bool dfuStatus() const { return m_dfuUnlocked; } void setDfuStatus(bool status) { m_dfuUnlocked=status; } int dfuCurrentStep() const { return m_dfuStep; } void dfuIncreaseStep() { m_dfuStep++; } void dfuResetStep() { m_dfuStep = 0; } int getDfuLevel() const { return m_dfuProtectLevel; } void setDfuLevel(int level) { m_dfuProtectLevel = level; } bool showDfuDeacAlert() const { return m_showDeacAlert; } void setDfuDeacAlert(bool value) { m_showDeacAlert = value; } bool autocomplete() const { return m_autoComplete; } void setAutocomplete(bool autocomple) { m_autoComplete = autocomple; } int brightnessLevel() const { return m_brightnessLevel; } void setBrightnessLevel(int brightnessLevel); const KDFont * font() const { return m_font; } void setFont(const KDFont * font) { m_font = font; } constexpr static int NumberOfBrightnessStates = 15; constexpr static int DfuUnlockStep = 3; private: static_assert(I18n::NumberOfLanguages > 0, "I18n::NumberOfLanguages is not superior to 0"); // There should already have been an error when processing an empty EPSILON_I18N flag static_assert(I18n::NumberOfCountries > 0, "I18n::NumberOfCountries is not superior to 0"); // There should already have been an error when processing an empty EPSILON_COUNTRIES flag GlobalPreferences() : m_language((I18n::Language)0), m_country((I18n::Country)0), m_examMode(ExamMode::Unknown), m_tempExamMode(ExamMode::Standard), m_showPopUp(true), m_dfuUnlocked(false), m_dfuStep(0), m_dfuProtectLevel(0), m_showDeacAlert(true), m_autoComplete(true), m_brightnessLevel(Ion::Backlight::MaxBrightness), m_font(KDFont::LargeFont) {} I18n::Language m_language; I18n::Country m_country; static_assert((int8_t)GlobalPreferences::ExamMode::Off == 0, "GlobalPreferences::isInExamMode() is not right"); static_assert((int8_t)GlobalPreferences::ExamMode::Unknown < 0, "GlobalPreferences::isInExamMode() is not right"); mutable ExamMode m_examMode; mutable ExamMode m_tempExamMode; bool m_showPopUp; bool m_dfuUnlocked; int m_dfuStep; int m_dfuProtectLevel; // 0: default; 1: OmegaMode; 2: Paranoid; 3: Paranoid++ bool m_showDeacAlert; bool m_autoComplete; int m_brightnessLevel; const KDFont * m_font; }; #endif