diff options
author | Kieran Cawthray <kieranc@gmail.com> | 2021-07-20 15:30:07 +0200 |
---|---|---|
committer | Kieran Cawthray <kieranc@gmail.com> | 2021-07-20 15:30:07 +0200 |
commit | db784fc2fb4e9095f3c1a0168a4b6978e8bfa76d (patch) | |
tree | 84bbed8c3a9ae57ad2fdbe92b0f61e8eadbc5fbc /src/components/settings | |
parent | 5c183bef8549368ca8709f98215d52f8e150ad57 (diff) | |
parent | 57b339707861c5688f5d432f1506a99df6bb0fce (diff) |
Merge remote-tracking branch 'upstream/develop' into pinetimestyle-colorpicker
Diffstat (limited to 'src/components/settings')
-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 28cfe775..cddef635 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); @@ -99,15 +104,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) { @@ -147,7 +170,7 @@ namespace Pinetime { uint8_t PTSColorBar = 11; uint8_t PTSColorBG = 3; - WakeUpMode wakeUpMode = WakeUpMode::None; + std::bitset<3> wakeUpMode {0}; Controllers::BrightnessController::Levels brightLevel = Controllers::BrightnessController::Levels::Medium; }; @@ -162,4 +185,4 @@ namespace Pinetime { void SaveSettingsToFile(); }; } -}
\ No newline at end of file +} |