Block alarm exits, add app glance, and fix wakeup being scheduled incorrectly

This commit is contained in:
2026-08-02 10:36:31 -04:00
parent b5316c5a77
commit 93e966ede8
+21 -2
View File
@@ -42,6 +42,17 @@ static const GColor s_highlight_color = GColorMediumAquamarine;
/////////////////////////////////
static void glance_reload_callback(AppGlanceReloadSession *session, size_t limit, void *context) {
static char s_glance_buffer[11];
snprintf(s_glance_buffer, sizeof(s_glance_buffer), "Up @ %02d:%02d", s_setter_time.HourSet, s_setter_time.MinuteSet);
AppGlanceSlice slice = {
.expiration_time = time(NULL) + (7 * SECONDS_PER_DAY),
.layout.icon = APP_GLANCE_SLICE_DEFAULT_ICON,
.layout.subtitle_template_string = s_glance_buffer,
};
app_glance_add_slice(session, slice);
}
static void setter_seconds_handler(struct tm *tick_time, TimeUnits units_changed) {
struct tm now_tm = *tick_time;
@@ -131,8 +142,8 @@ static void setter_select_click_handler(void *recognizer, void *ctx) {
time_t now = time(NULL);
struct tm now_tm = *localtime(&now);
struct tm target_tm = now_tm;
target_tm.tm_hour = s_setter_time.HourSet;
target_tm.tm_min = s_setter_time.MinuteSet;
target_tm.tm_hour = s_setter_time.HourWIP;
target_tm.tm_min = s_setter_time.MinuteWIP;
target_tm.tm_sec = 0;
time_t target = mktime(&target_tm);
if (target <= now) {
@@ -160,6 +171,9 @@ static void setter_select_click_handler(void *recognizer, void *ctx) {
// move selection back to start
s_highlight_pos = 0;
// set app glance
app_glance_reload(glance_reload_callback, NULL);
} else {
s_highlight_pos++;
}
@@ -300,6 +314,10 @@ static void alarm_window_unload() {
text_layer_destroy(s_alarm_txt_layer);
}
static void alarm_click_config_provider(void *ctx) {
window_single_click_subscribe(BUTTON_ID_BACK, NULL);
}
static void init() {
s_window = window_create();
@@ -308,6 +326,7 @@ static void init() {
window_set_window_handlers(
s_window,
(WindowHandlers){.load = alarm_window_load, .unload = alarm_window_unload});
window_set_click_config_provider(s_window, alarm_click_config_provider);
window_stack_push(s_window, false);
break;
default: