/* Determine current time at time zone and store date/time */
date_time = watch_rtc_get_date_time();
- timestamp = watch_utility_date_time_to_unix_time(date_time, state->tz * 60);
- date_time = watch_utility_date_time_from_unix_time(timestamp, state->tz * 60);
+ timestamp = watch_utility_date_time_to_unix_time(date_time, state->tz * 60);
+ date_time = watch_utility_date_time_from_unix_time(timestamp, state->tz_curr * 60);
previous_date_time = state->previous_date_time;
state->previous_date_time = date_time.reg;
break;
case EVENT_ALARM_BUTTON_UP:
state->current_zone = find_selected_zone(state, FORWARD);
- state->previous_date_time = REFRESH_TIME;
+ state->tz_curr = get_timezone_offset(state->current_zone, watch_rtc_get_date_time());
+ state->previous_date_time = REFRESH_TIME;
break;
case EVENT_LIGHT_BUTTON_DOWN:
/* Do nothing. */
break;
case EVENT_LIGHT_BUTTON_UP:
state->current_zone = find_selected_zone(state, BACKWARD);
- state->previous_date_time = REFRESH_TIME;
+ state->tz_curr = get_timezone_offset(state->current_zone, watch_rtc_get_date_time());
+ state->previous_date_time = REFRESH_TIME;
break;
case EVENT_LIGHT_LONG_PRESS:
movement_illuminate_led();
watch_clear_indicator(WATCH_INDICATOR_PM);
refresh_face = false;
}
- result = div(state->tz, 60);
+ result = div(state->tz_curr, 60);
hours = result.quot;
minutes = result.rem;
break;
case EVENT_ALARM_BUTTON_UP:
state->current_zone = mod(state->current_zone + FORWARD, NUM_TIME_ZONES);
+ state->tz_curr = get_timezone_offset(state->current_zone, watch_rtc_get_date_time());
break;
case EVENT_LIGHT_BUTTON_UP:
state->current_zone = mod(state->current_zone + BACKWARD, NUM_TIME_ZONES);
+ state->tz_curr = get_timezone_offset(state->current_zone, watch_rtc_get_date_time());
break;
case EVENT_LIGHT_BUTTON_DOWN:
/* Do nothing */
break;
case EVENT_ALARM_LONG_PRESS:
/* Find next selected zone */
- if (!state->zones[state->current_zone].selected)
- state->current_zone = find_selected_zone(state, FORWARD);
+ if (!state->zones[state->current_zone].selected) {
+ state->current_zone = find_selected_zone(state, FORWARD);
+ state->tz_curr = get_timezone_offset(state->current_zone, watch_rtc_get_date_time());
+ }
/* Switch to display mode */
state->current_mode = WORLD_CLOCK2_MODE_DISPLAY;
case EVENT_LOW_ENERGY_UPDATE:
date_time = watch_rtc_get_date_time();
timestamp = watch_utility_date_time_to_unix_time(date_time, state->tz * 60);
- date_time = watch_utility_date_time_from_unix_time(timestamp, state->tz * 60);
+ date_time = watch_utility_date_time_from_unix_time(timestamp, state->tz_curr * 60);
previous_date_time = state->previous_date_time;
state->previous_date_time = date_time.reg;
case 3:
state->settings.bit.timezone_index++;
if (state->settings.bit.timezone_index > 40) state->settings.bit.timezone_index = 0;
+ state->tz_curr = get_timezone_offset(state->settings.bit.timezone_index, watch_rtc_get_date_time());
break;
}
break;
sprintf(buf, "%c%c %3d%02d ",
movement_valid_position_0_chars[state->settings.bit.char_0],
movement_valid_position_1_chars[state->settings.bit.char_1],
- (int8_t) (state->tz / 60),
- (int8_t) (state->tz % 60) * (state->tz < 0 ? -1 : 1));
+ (int8_t) (state->tz_curr / 60),
+ (int8_t) (state->tz_curr % 60) * (state->tz_curr < 0 ? -1 : 1));
watch_set_colon();
watch_clear_indicator(WATCH_INDICATOR_PM);