summaryrefslogtreecommitdiff
path: root/src/components/settings
diff options
context:
space:
mode:
authorKieran Cawthray <kieranc@gmail.com>2021-07-20 15:30:07 +0200
committerKieran Cawthray <kieranc@gmail.com>2021-07-20 15:30:07 +0200
commitdb784fc2fb4e9095f3c1a0168a4b6978e8bfa76d (patch)
tree84bbed8c3a9ae57ad2fdbe92b0f61e8eadbc5fbc /src/components/settings
parent5c183bef8549368ca8709f98215d52f8e150ad57 (diff)
parent57b339707861c5688f5d432f1506a99df6bb0fce (diff)
Merge remote-tracking branch 'upstream/develop' into pinetimestyle-colorpicker
Diffstat (limited to 'src/components/settings')
-rw-r--r--src/components/settings/Settings.h39
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
+}