Skip to content

Commit

Permalink
aod: simplify AOD disablement based on notification status
Browse files Browse the repository at this point in the history
  • Loading branch information
mark9064 committed Jul 21, 2024
1 parent ae0e893 commit 7f3720e
Showing 1 changed file with 5 additions and 32 deletions.
37 changes: 5 additions & 32 deletions src/components/settings/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,14 +196,6 @@ namespace Pinetime {
if (status != settings.notificationStatus) {
settingsChanged = true;
}
// Disable always on screen while sleep mode is enabled
if (settings.alwaysOnDisplay.enabled) {
if (status == Notification::Sleep) {
settings.alwaysOnDisplay.state = false;
} else {
settings.alwaysOnDisplay.state = true;
}
}
settings.notificationStatus = status;
};

Expand All @@ -222,31 +214,19 @@ namespace Pinetime {
return settings.screenTimeOut;
};

void SetAlwaysOnDisplay(bool state) {
if (state != settings.alwaysOnDisplay.state) {
settingsChanged = true;
}
settings.alwaysOnDisplay.state = state;
};

bool GetAlwaysOnDisplay() const {
return settings.alwaysOnDisplay.state;
return settings.alwaysOnDisplay && GetNotificationStatus() != Notification::Sleep;
};

void SetAlwaysOnDisplaySetting(bool state) {
if (state != settings.alwaysOnDisplay.enabled) {
if (state != settings.alwaysOnDisplay) {
settingsChanged = true;
}
settings.alwaysOnDisplay.enabled = state;

// Don't enable always on if we are currently in notification sleep
if (GetNotificationStatus() != Notification::Sleep) {
SetAlwaysOnDisplay(state);
}
settings.alwaysOnDisplay = state;
}

bool GetAlwaysOnDisplaySetting() const {
return settings.alwaysOnDisplay.enabled;
return settings.alwaysOnDisplay;
}

void SetShakeThreshold(uint16_t thresh) {
Expand Down Expand Up @@ -323,19 +303,12 @@ namespace Pinetime {

static constexpr uint32_t settingsVersion = 0x0008;

// To enable disabling it during notification sleep, differentiate between
// the setting being on, and the setting being set by the user
struct alwaysOnDisplayData {
bool enabled = false;
bool state = false;
};

struct SettingsData {
uint32_t version = settingsVersion;
uint32_t stepsGoal = 10000;
uint32_t screenTimeOut = 15000;

alwaysOnDisplayData alwaysOnDisplay;
bool alwaysOnDisplay = false;

ClockType clockType = ClockType::H24;
WeatherFormat weatherFormat = WeatherFormat::Metric;
Expand Down

0 comments on commit 7f3720e

Please sign in to comment.