Corrected a potential bug, made the date and time rollers disabled when set automatic time and date is enabled. Added the set automatic time and date feature which time and dates, if enabled, are sent by the Gadget Bridge Android Application
This commit is contained in:
parent
1c39e02f11
commit
22621219f3
@ -26,6 +26,8 @@ static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *tex
|
||||
static void _simulate_side_screen_item_click(SettingsScreen_t * const settingsScreen, lv_obj_t *item);
|
||||
static void _set_rtc_time_to_label(SettingsScreen_t * const settingsScreen);
|
||||
static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScreen);
|
||||
static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen);
|
||||
static void _enable_time_and_date_rollers(bool enabled, SettingsScreen_t * const settingsScreen);
|
||||
|
||||
static void _settings_screen_update_labels_language(SettingsScreen_t * const settingsScreen)
|
||||
{
|
||||
@ -220,6 +222,11 @@ static void activation_switch_cb(lv_event_t *e)
|
||||
{
|
||||
if(settingsScreen->settingsScreenAPIInterface.setWristTiltSettingsCb)settingsScreen->settingsScreenAPIInterface.setWristTiltSettingsCb(&toggled, SETTING_MODE_SET);
|
||||
}
|
||||
else if(e->target == settingsScreen->auto_set_time_switch)
|
||||
{
|
||||
if(settingsScreen->settingsScreenAPIInterface.setAutomaticTimeSettingsCb)settingsScreen->settingsScreenAPIInterface.setAutomaticTimeSettingsCb(&toggled, SETTING_MODE_SET);
|
||||
_enable_time_and_date_rollers(!toggled, settingsScreen);
|
||||
}
|
||||
}
|
||||
|
||||
static void language_dropdown_cb(lv_event_t *e)
|
||||
@ -254,6 +261,7 @@ static void about_refresh_timer_cb(lv_timer_t *timer)
|
||||
static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
uint8_t hour = 0, minute = 0, second = 0, day = 0, month = 0, year = 0;
|
||||
if(settingsScreen->settingsScreenAPIInterface.setTimeSettingsCb)
|
||||
@ -262,16 +270,23 @@ static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Set Time & Date :");
|
||||
|
||||
lv_obj_t *toggle = lv_switch_create(settingsScreen->side_screen);
|
||||
lv_obj_align_to(toggle, label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
||||
label = lv_label_create(settingsScreen->side_screen);
|
||||
settingsScreen->auto_set_time_switch = lv_switch_create(settingsScreen->side_screen);
|
||||
lv_obj_align_to(settingsScreen->auto_set_time_switch, label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
||||
bool auto_set_enable = false;
|
||||
if(settingsScreen->settingsScreenAPIInterface.setAutomaticTimeSettingsCb)settingsScreen->settingsScreenAPIInterface.setAutomaticTimeSettingsCb(&auto_set_enable, SETTING_MODE_GET);
|
||||
if(auto_set_enable)
|
||||
{
|
||||
lv_obj_add_state(settingsScreen->auto_set_time_switch, LV_STATE_CHECKED);
|
||||
}
|
||||
lv_obj_add_event_cb(settingsScreen->auto_set_time_switch, &(activation_switch_cb), LV_EVENT_VALUE_CHANGED, settingsScreen);
|
||||
|
||||
label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Automatic");
|
||||
lv_obj_align_to(label, toggle, LV_ALIGN_OUT_RIGHT_MID, 10, 0);
|
||||
lv_obj_align_to(label, settingsScreen->auto_set_time_switch, LV_ALIGN_OUT_RIGHT_MID, 10, 0);
|
||||
|
||||
label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Time :");
|
||||
lv_obj_align_to(label, toggle, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
||||
lv_obj_align_to(label, settingsScreen->auto_set_time_switch, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
||||
|
||||
settingsScreen->hour_roller = lv_roller_create(settingsScreen->side_screen);
|
||||
settingsScreen->minute_roller = lv_roller_create(settingsScreen->side_screen);
|
||||
@ -349,6 +364,8 @@ static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
|
||||
lv_roller_set_visible_row_count(settingsScreen->year_roller, 2);
|
||||
lv_roller_set_selected(settingsScreen->year_roller, year-22, LV_ANIM_OFF);
|
||||
lv_obj_add_event_cb(settingsScreen->year_roller, &(time_roller_cb), LV_EVENT_RELEASED, settingsScreen);
|
||||
// We set the state of the rollers only here, because they are not created yet earlier.
|
||||
_enable_time_and_date_rollers(!auto_set_enable, settingsScreen);
|
||||
|
||||
label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Date Format :");
|
||||
@ -362,6 +379,7 @@ static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
|
||||
static void load_display_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Brightness :");
|
||||
@ -451,6 +469,7 @@ static void load_display_side_screen(SettingsScreen_t *settingsScreen)
|
||||
static void load_notifications_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Vibrate on\nnotifications :");
|
||||
@ -479,6 +498,7 @@ static void load_notifications_side_screen(SettingsScreen_t *settingsScreen)
|
||||
static void load_connectivity_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Connectivity :");
|
||||
@ -520,6 +540,7 @@ static void load_connectivity_side_screen(SettingsScreen_t *settingsScreen)
|
||||
static void load_language_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "Language :");
|
||||
@ -536,6 +557,7 @@ static void load_language_side_screen(SettingsScreen_t *settingsScreen)
|
||||
static void load_about_side_screen(SettingsScreen_t *settingsScreen)
|
||||
{
|
||||
lv_obj_clean(settingsScreen->side_screen);
|
||||
_reset_switch_pointers(settingsScreen);
|
||||
|
||||
lv_obj_t *label = lv_label_create(settingsScreen->side_screen);
|
||||
lv_label_set_text_static(label, "System Info :");
|
||||
@ -765,6 +787,50 @@ static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScree
|
||||
lv_label_set_text_static(settingsScreen->batteryVoltage.batteryVoltageLabel, settingsScreen->batteryVoltage.batteryVoltageText);
|
||||
}
|
||||
|
||||
static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen)
|
||||
{
|
||||
settingsScreen->auto_set_time_switch = NULL;
|
||||
settingsScreen->wrist_tilt_switch = NULL;
|
||||
settingsScreen->ble_switch = NULL;
|
||||
settingsScreen->wifi_switch = NULL;
|
||||
}
|
||||
|
||||
static void _enable_time_and_date_rollers(bool enabled, SettingsScreen_t * const settingsScreen)
|
||||
{
|
||||
if(enabled)
|
||||
{
|
||||
lv_obj_clear_state(settingsScreen->hour_roller, LV_STATE_DISABLED);
|
||||
lv_obj_clear_state(settingsScreen->minute_roller, LV_STATE_DISABLED);
|
||||
lv_obj_clear_state(settingsScreen->second_roller, LV_STATE_DISABLED);
|
||||
lv_obj_clear_state(settingsScreen->day_roller, LV_STATE_DISABLED);
|
||||
lv_obj_clear_state(settingsScreen->month_roller, LV_STATE_DISABLED);
|
||||
lv_obj_clear_state(settingsScreen->year_roller, LV_STATE_DISABLED);
|
||||
|
||||
lv_obj_set_style_bg_color(settingsScreen->hour_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->minute_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->second_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->day_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->month_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->year_roller, lv_palette_main(LV_PALETTE_BLUE), LV_PART_SELECTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
lv_obj_add_state(settingsScreen->hour_roller, LV_STATE_DISABLED);
|
||||
lv_obj_add_state(settingsScreen->minute_roller, LV_STATE_DISABLED);
|
||||
lv_obj_add_state(settingsScreen->second_roller, LV_STATE_DISABLED);
|
||||
lv_obj_add_state(settingsScreen->day_roller, LV_STATE_DISABLED);
|
||||
lv_obj_add_state(settingsScreen->month_roller, LV_STATE_DISABLED);
|
||||
lv_obj_add_state(settingsScreen->year_roller, LV_STATE_DISABLED);
|
||||
|
||||
lv_obj_set_style_bg_color(settingsScreen->hour_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->minute_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->second_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->day_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->month_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
lv_obj_set_style_bg_color(settingsScreen->year_roller, lv_palette_lighten(LV_PALETTE_GREY, 1), LV_PART_SELECTED);
|
||||
}
|
||||
}
|
||||
|
||||
static lv_obj_t *add_menu_list_item(lv_obj_t *list, const char *text, lv_event_cb_t event_cb, void *user_data)
|
||||
{
|
||||
lv_obj_t *btn = lv_list_add_btn(list, NULL, text);
|
||||
|
@ -11,6 +11,7 @@ typedef enum SettingMode
|
||||
|
||||
typedef struct SettingsScreenAPIInterface
|
||||
{
|
||||
void (*setAutomaticTimeSettingsCb)(bool *enabled, SettingMode_e mode);
|
||||
void (*setTimeSettingsCb)(uint8_t *hour, uint8_t *minute, uint8_t *second, uint8_t *day, uint8_t *month, uint8_t *year, SettingMode_e mode);
|
||||
void (*setTimeFormatSettingsCb)(bool *hour_24H_format, SettingMode_e mode);
|
||||
void (*setBrightnessSettingsCb)(uint8_t *brightness, SettingMode_e mode);
|
||||
@ -42,6 +43,7 @@ typedef struct SettingsScreen
|
||||
lv_obj_t *side_screen;
|
||||
|
||||
/* Menu widgets */
|
||||
lv_obj_t *auto_set_time_switch;
|
||||
lv_obj_t *hour_roller;
|
||||
lv_obj_t *minute_roller;
|
||||
lv_obj_t *second_roller;
|
||||
|
Loading…
Reference in New Issue
Block a user