feat: add sleep screen selection

This commit is contained in:
dpoulter 2026-02-01 09:55:00 +02:00
parent c3ce6e11da
commit da142c362e
2 changed files with 71 additions and 38 deletions

View File

@ -272,44 +272,55 @@ int CrossPointSettings::getReaderFontId() const {
}
}
namespace {
const char* const REFRESH_FREQUENCY_OPTIONS[] = {
#define X(name, val, str) str,
REFRESH_DATA
#undef X
};
const char* const SLEEP_SCREEN_OPTIONS[] = {
#define X(name, val, str) str,
SLEEP_SCREEN_DATA
#undef X
};
const char* const SLEEP_TIMEOUT_OPTIONS[] = {
#define X(name, val, str) str,
TIMEOUT_DATA
#undef X
};
} // namespace
const char* CrossPointSettings::getRefreshFrequencyString(uint8_t value) {
static const char* options[] = {"1 page", "5 pages", "10 pages", "15 pages", "30 pages"};
static constexpr size_t count = sizeof(options) / sizeof(options[0]);
if (value < count) {
return options[value];
if (value < REFRESH_FREQUENCY_COUNT) {
return REFRESH_FREQUENCY_OPTIONS[value];
}
return options[REFRESH_15]; // Default
return REFRESH_FREQUENCY_OPTIONS[REFRESH_15];
}
size_t CrossPointSettings::getRefreshFrequencyCount() {
static const char* options[] = {"1 page", "5 pages", "10 pages", "15 pages", "30 pages"};
return sizeof(options) / sizeof(options[0]);
return REFRESH_FREQUENCY_COUNT;
}
const char* CrossPointSettings::getSleepScreenString(uint8_t value) {
static const char* options[] = {"Dark", "Light", "Custom", "Cover", "None"};
static constexpr size_t count = sizeof(options) / sizeof(options[0]);
if (value < count) {
return options[value];
if (value < SLEEP_SCREEN_MODE_COUNT) {
return SLEEP_SCREEN_OPTIONS[value];
}
return options[DARK]; // Default
return SLEEP_SCREEN_OPTIONS[DARK];
}
size_t CrossPointSettings::getSleepScreenCount() {
static const char* options[] = {"Dark", "Light", "Custom", "Cover", "None"};
return sizeof(options) / sizeof(options[0]);
return SLEEP_SCREEN_MODE_COUNT;
}
const char* CrossPointSettings::getSleepTimeoutString(uint8_t value) {
static const char* options[] = {"1 min", "5 min", "10 min", "15 min", "30 min"};
static constexpr size_t count = sizeof(options) / sizeof(options[0]);
if (value < count) {
return options[value];
if (value < SLEEP_TIMEOUT_COUNT) {
return SLEEP_TIMEOUT_OPTIONS[value];
}
return options[SLEEP_10_MIN]; // Default
return SLEEP_TIMEOUT_OPTIONS[SLEEP_10_MIN];
}
size_t CrossPointSettings::getSleepTimeoutCount() {
static const char* options[] = {"1 min", "5 min", "10 min", "15 min", "30 min"};
return sizeof(options) / sizeof(options[0]);
return SLEEP_TIMEOUT_COUNT;
}

View File

@ -15,7 +15,19 @@ class CrossPointSettings {
CrossPointSettings(const CrossPointSettings&) = delete;
CrossPointSettings& operator=(const CrossPointSettings&) = delete;
enum SLEEP_SCREEN_MODE { DARK = 0, LIGHT = 1, CUSTOM = 2, COVER = 3, BLANK = 4, SLEEP_SCREEN_MODE_COUNT };
#define SLEEP_SCREEN_DATA \
X(DARK, 0, "Dark") \
X(LIGHT, 1, "Light") \
X(CUSTOM, 2, "Custom") \
X(COVER, 3, "Cover") \
X(BLANK, 4, "None")
enum SLEEP_SCREEN_MODE {
#define X(name, val, str) name = val,
SLEEP_SCREEN_DATA
#undef X
SLEEP_SCREEN_MODE_COUNT
};
enum SLEEP_SCREEN_COVER_MODE { FIT = 0, CROP = 1, SLEEP_SCREEN_COVER_MODE_COUNT };
enum SLEEP_SCREEN_COVER_FILTER {
NO_FILTER = 0,
@ -71,24 +83,34 @@ class CrossPointSettings {
PARAGRAPH_ALIGNMENT_COUNT
};
// Auto-sleep timeout options (in minutes)
enum SLEEP_TIMEOUT {
SLEEP_1_MIN = 0,
SLEEP_5_MIN = 1,
SLEEP_10_MIN = 2,
SLEEP_15_MIN = 3,
SLEEP_30_MIN = 4,
SLEEP_TIMEOUT_COUNT
// E-ink refresh frequency (pages between full refreshes)
#define REFRESH_DATA \
X(REFRESH_1, 0, "1 page") \
X(REFRESH_5, 1, "5 pages") \
X(REFRESH_10, 2, "10 pages") \
X(REFRESH_15, 3, "15 pages") \
X(REFRESH_30, 4, "30 pages")
enum REFRESH_FREQUENCY {
#define X(name, val, str) name = val,
REFRESH_DATA
#undef X
REFRESH_FREQUENCY_COUNT
};
// E-ink refresh frequency (pages between full refreshes)
enum REFRESH_FREQUENCY {
REFRESH_1 = 0,
REFRESH_5 = 1,
REFRESH_10 = 2,
REFRESH_15 = 3,
REFRESH_30 = 4,
REFRESH_FREQUENCY_COUNT
// Auto-sleep timeout options (in minutes)
#define TIMEOUT_DATA \
X(SLEEP_1_MIN, 0, "1 min") \
X(SLEEP_5_MIN, 1, "5 min") \
X(SLEEP_10_MIN, 2, "10 min") \
X(SLEEP_15_MIN, 3, "15 min") \
X(SLEEP_30_MIN, 4, "30 min")
enum SLEEP_TIMEOUT {
#define X(name, val, str) name = val,
TIMEOUT_DATA
#undef X
SLEEP_TIMEOUT_COUNT
};
// Short power button press actions