day_one_face: show set date on short alarm button press
This commit is contained in:
parent
e8b7985dde
commit
984990fb66
@ -100,6 +100,7 @@ void day_one_face_activate(movement_settings_t *settings, void *context) {
|
||||
|
||||
state->current_page = PAGE_DISPLAY;
|
||||
state->quick_cycle = false;
|
||||
state->ticks = 0;
|
||||
|
||||
// fetch the user's birth date from the birthday register.
|
||||
movement_birthdate_t movement_birthdate = (movement_birthdate_t) watch_get_backup_data(2);
|
||||
@ -112,7 +113,7 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
||||
(void) settings;
|
||||
day_one_state_t *state = (day_one_state_t *)context;
|
||||
|
||||
char buf[6];
|
||||
char buf[9];
|
||||
|
||||
switch (event.event_type) {
|
||||
case EVENT_ACTIVATE:
|
||||
@ -120,7 +121,6 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
||||
break;
|
||||
case EVENT_LOW_ENERGY_UPDATE:
|
||||
case EVENT_TICK:
|
||||
if (state->current_page != PAGE_DISPLAY) {
|
||||
if (state->quick_cycle) {
|
||||
if (watch_get_pin_level(BTN_ALARM)) {
|
||||
_day_one_face_increment(state);
|
||||
@ -128,8 +128,8 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
||||
_day_one_face_abort_quick_cycle(state);
|
||||
}
|
||||
}
|
||||
// if in settings mode, update whatever the current page is
|
||||
switch (state->current_page) {
|
||||
// if in settings mode, update whatever the current page is
|
||||
case PAGE_YEAR:
|
||||
watch_display_string("YR ", 0);
|
||||
if (event.subsecond % 2) {
|
||||
@ -151,24 +151,45 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
||||
watch_display_string(buf, 6);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// otherwise, check if we have to update. the display only needs to change at midnight!
|
||||
case PAGE_DISPLAY: {
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
if (date_time.unit.hour == 0 && date_time.unit.minute == 0 && date_time.unit.second == 0) {
|
||||
_day_one_face_update(state);
|
||||
}
|
||||
break;}
|
||||
case PAGE_DATE:
|
||||
if (state->ticks > 0) {
|
||||
state->ticks--;
|
||||
} else {
|
||||
state->current_page = PAGE_DISPLAY;
|
||||
_day_one_face_update(state);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EVENT_LIGHT_BUTTON_DOWN:
|
||||
// only illuminate if we're in display mode
|
||||
if (state->current_page == PAGE_DISPLAY) movement_illuminate_led();
|
||||
switch (state->current_page) {
|
||||
case PAGE_DISPLAY:
|
||||
// fall through
|
||||
case PAGE_DATE:
|
||||
movement_illuminate_led();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EVENT_LIGHT_BUTTON_UP:
|
||||
// otherwise use the light button to advance settings pages.
|
||||
if (state->current_page != PAGE_DISPLAY) {
|
||||
switch (state->current_page) {
|
||||
case PAGE_YEAR:
|
||||
// fall through
|
||||
case PAGE_MONTH:
|
||||
// fall through
|
||||
case PAGE_DAY:
|
||||
// go to next setting page...
|
||||
state->current_page = (state->current_page + 1) % 4;
|
||||
if (state->current_page == PAGE_DISPLAY) {
|
||||
@ -177,23 +198,49 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
||||
// force display since it normally won't update til midnight.
|
||||
_day_one_face_update(state);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EVENT_ALARM_BUTTON_UP:
|
||||
// if we are on a settings page, increment whatever value we're setting.
|
||||
if (state->current_page != PAGE_DISPLAY) {
|
||||
switch (state->current_page) {
|
||||
case PAGE_YEAR:
|
||||
// fall through
|
||||
case PAGE_MONTH:
|
||||
// fall through
|
||||
case PAGE_DAY:
|
||||
_day_one_face_abort_quick_cycle(state);
|
||||
_day_one_face_increment(state);
|
||||
break;
|
||||
case PAGE_DISPLAY:
|
||||
state->current_page = PAGE_DATE;
|
||||
sprintf(buf, "%04d%02d%02d", state->birth_year % 10000, state->birth_month % 100, state->birth_day % 100);
|
||||
watch_display_string(buf, 2);
|
||||
state->ticks = 2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EVENT_ALARM_LONG_PRESS:
|
||||
// if we aren't already in settings mode, put us there.
|
||||
if (state->current_page == PAGE_DISPLAY) {
|
||||
switch (state->current_page) {
|
||||
case PAGE_DISPLAY:
|
||||
state->current_page++;
|
||||
movement_request_tick_frequency(4);
|
||||
} else {
|
||||
break;
|
||||
case PAGE_YEAR:
|
||||
// fall through
|
||||
case PAGE_MONTH:
|
||||
// fall through
|
||||
case PAGE_DAY:
|
||||
state->quick_cycle = true;
|
||||
movement_request_tick_frequency(8);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EVENT_ALARM_LONG_UP:
|
||||
|
@ -34,7 +34,8 @@ typedef enum {
|
||||
PAGE_DISPLAY,
|
||||
PAGE_YEAR,
|
||||
PAGE_MONTH,
|
||||
PAGE_DAY
|
||||
PAGE_DAY,
|
||||
PAGE_DATE
|
||||
} day_one_page_t;
|
||||
|
||||
typedef struct {
|
||||
@ -44,6 +45,7 @@ typedef struct {
|
||||
uint8_t birth_day;
|
||||
bool birthday_changed;
|
||||
bool quick_cycle;
|
||||
uint8_t ticks;
|
||||
} day_one_state_t;
|
||||
|
||||
void day_one_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user