diff options
author | Riku Isokoski <riksu9000@gmail.com> | 2021-07-15 01:03:44 +0300 |
---|---|---|
committer | Riku Isokoski <riksu9000@gmail.com> | 2021-07-15 01:03:44 +0300 |
commit | 7ac6bdfe71f10dd4388da6d3fd29650b072f71f7 (patch) | |
tree | 9ebb572f609bb13fe1a7ad5e2a46ce97174269d0 /src/components/settings/Settings.h | |
parent | 5bc40c9287f06d2c2bb24a5691175f1d29a17c1b (diff) | |
parent | 57b339707861c5688f5d432f1506a99df6bb0fce (diff) |
Merge branch 'develop' into update_touch_driver
Diffstat (limited to 'src/components/settings/Settings.h')
-rw-r--r-- | src/components/settings/Settings.h | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index 577455eb..93d6d217 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -1,5 +1,6 @@ #pragma once #include <cstdint> +#include <bitset> #include "components/datetime/DateTimeController.h" #include "components/brightness/BrightnessController.h" #include "components/fs/FS.h" @@ -11,7 +12,11 @@ namespace Pinetime { public: enum class ClockType : uint8_t { H24, H12 }; enum class Vibration : uint8_t { ON, OFF }; - enum class WakeUpMode : uint8_t { None, SingleTap, DoubleTap, RaiseWrist }; + enum class WakeUpMode : uint8_t { + SingleTap = 0, + DoubleTap = 1, + RaiseWrist = 2, + }; Settings(Pinetime::Controllers::FS& fs); @@ -72,15 +77,33 @@ namespace Pinetime { return settings.screenTimeOut; }; - void setWakeUpMode(WakeUpMode wakeUp) { - if (wakeUp != settings.wakeUpMode) { + void setWakeUpMode(WakeUpMode wakeUp, bool enabled) { + if (!isWakeUpModeOn(wakeUp)) { settingsChanged = true; } - settings.wakeUpMode = wakeUp; + settings.wakeUpMode.set(static_cast<size_t>(wakeUp), enabled); + // Handle special behavior + if (enabled) { + switch (wakeUp) { + case WakeUpMode::SingleTap: + settings.wakeUpMode.set(static_cast<size_t>(WakeUpMode::DoubleTap), false); + break; + case WakeUpMode::DoubleTap: + settings.wakeUpMode.set(static_cast<size_t>(WakeUpMode::SingleTap), false); + break; + case WakeUpMode::RaiseWrist: + break; + } + } }; - WakeUpMode getWakeUpMode() const { + + std::bitset<3> getWakeUpModes() const { return settings.wakeUpMode; - }; + } + + bool isWakeUpModeOn(const WakeUpMode mode) const { + return getWakeUpModes()[static_cast<size_t>(mode)]; + } void SetBrightness(Controllers::BrightnessController::Levels level) { if (level != settings.brightLevel) { @@ -116,7 +139,7 @@ namespace Pinetime { uint8_t clockFace = 0; - WakeUpMode wakeUpMode = WakeUpMode::None; + std::bitset<3> wakeUpMode {0}; Controllers::BrightnessController::Levels brightLevel = Controllers::BrightnessController::Levels::Medium; }; @@ -131,4 +154,4 @@ namespace Pinetime { void SaveSettingsToFile(); }; } -}
\ No newline at end of file +} |