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->current_page = PAGE_DISPLAY;
|
||||||
state->quick_cycle = false;
|
state->quick_cycle = false;
|
||||||
|
state->ticks = 0;
|
||||||
|
|
||||||
// fetch the user's birth date from the birthday register.
|
// fetch the user's birth date from the birthday register.
|
||||||
movement_birthdate_t movement_birthdate = (movement_birthdate_t) watch_get_backup_data(2);
|
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;
|
(void) settings;
|
||||||
day_one_state_t *state = (day_one_state_t *)context;
|
day_one_state_t *state = (day_one_state_t *)context;
|
||||||
|
|
||||||
char buf[6];
|
char buf[9];
|
||||||
|
|
||||||
switch (event.event_type) {
|
switch (event.event_type) {
|
||||||
case EVENT_ACTIVATE:
|
case EVENT_ACTIVATE:
|
||||||
@ -120,7 +121,6 @@ bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, vo
|
|||||||
break;
|
break;
|
||||||
case EVENT_LOW_ENERGY_UPDATE:
|
case EVENT_LOW_ENERGY_UPDATE:
|
||||||
case EVENT_TICK:
|
case EVENT_TICK:
|
||||||
if (state->current_page != PAGE_DISPLAY) {
|
|
||||||
if (state->quick_cycle) {
|
if (state->quick_cycle) {
|
||||||
if (watch_get_pin_level(BTN_ALARM)) {
|
if (watch_get_pin_level(BTN_ALARM)) {
|
||||||
_day_one_face_increment(state);
|
_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);
|
_day_one_face_abort_quick_cycle(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if in settings mode, update whatever the current page is
|
|
||||||
switch (state->current_page) {
|
switch (state->current_page) {
|
||||||
|
// if in settings mode, update whatever the current page is
|
||||||
case PAGE_YEAR:
|
case PAGE_YEAR:
|
||||||
watch_display_string("YR ", 0);
|
watch_display_string("YR ", 0);
|
||||||
if (event.subsecond % 2) {
|
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);
|
watch_display_string(buf, 6);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// otherwise, check if we have to update. the display only needs to change at midnight!
|
// 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();
|
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) {
|
if (date_time.unit.hour == 0 && date_time.unit.minute == 0 && date_time.unit.second == 0) {
|
||||||
_day_one_face_update(state);
|
_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;
|
break;
|
||||||
case EVENT_LIGHT_BUTTON_DOWN:
|
case EVENT_LIGHT_BUTTON_DOWN:
|
||||||
// only illuminate if we're in display mode
|
// 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;
|
break;
|
||||||
case EVENT_LIGHT_BUTTON_UP:
|
case EVENT_LIGHT_BUTTON_UP:
|
||||||
// otherwise use the light button to advance settings pages.
|
// 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...
|
// go to next setting page...
|
||||||
state->current_page = (state->current_page + 1) % 4;
|
state->current_page = (state->current_page + 1) % 4;
|
||||||
if (state->current_page == PAGE_DISPLAY) {
|
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.
|
// force display since it normally won't update til midnight.
|
||||||
_day_one_face_update(state);
|
_day_one_face_update(state);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_ALARM_BUTTON_UP:
|
case EVENT_ALARM_BUTTON_UP:
|
||||||
// if we are on a settings page, increment whatever value we're setting.
|
// 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_abort_quick_cycle(state);
|
||||||
_day_one_face_increment(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;
|
break;
|
||||||
case EVENT_ALARM_LONG_PRESS:
|
case EVENT_ALARM_LONG_PRESS:
|
||||||
// if we aren't already in settings mode, put us there.
|
// 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++;
|
state->current_page++;
|
||||||
movement_request_tick_frequency(4);
|
movement_request_tick_frequency(4);
|
||||||
} else {
|
break;
|
||||||
|
case PAGE_YEAR:
|
||||||
|
// fall through
|
||||||
|
case PAGE_MONTH:
|
||||||
|
// fall through
|
||||||
|
case PAGE_DAY:
|
||||||
state->quick_cycle = true;
|
state->quick_cycle = true;
|
||||||
movement_request_tick_frequency(8);
|
movement_request_tick_frequency(8);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_ALARM_LONG_UP:
|
case EVENT_ALARM_LONG_UP:
|
||||||
|
@ -34,7 +34,8 @@ typedef enum {
|
|||||||
PAGE_DISPLAY,
|
PAGE_DISPLAY,
|
||||||
PAGE_YEAR,
|
PAGE_YEAR,
|
||||||
PAGE_MONTH,
|
PAGE_MONTH,
|
||||||
PAGE_DAY
|
PAGE_DAY,
|
||||||
|
PAGE_DATE
|
||||||
} day_one_page_t;
|
} day_one_page_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -44,6 +45,7 @@ typedef struct {
|
|||||||
uint8_t birth_day;
|
uint8_t birth_day;
|
||||||
bool birthday_changed;
|
bool birthday_changed;
|
||||||
bool quick_cycle;
|
bool quick_cycle;
|
||||||
|
uint8_t ticks;
|
||||||
} day_one_state_t;
|
} day_one_state_t;
|
||||||
|
|
||||||
void day_one_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
|
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