diff --git a/src/W800_SDK_v1.00.10/app/gfx/settings_screen.c b/src/W800_SDK_v1.00.10/app/gfx/settings_screen.c index d0ed3ac..325ec11 100644 --- a/src/W800_SDK_v1.00.10/app/gfx/settings_screen.c +++ b/src/W800_SDK_v1.00.10/app/gfx/settings_screen.c @@ -20,15 +20,24 @@ static const char* vibration_force = "1\n2\n3\n4\n5\n6\n7\n8"; static const char* language_options = "Francais\nDeutsch\nEnglish"; +static lv_obj_t *add_menu_list_item(lv_obj_t *list, const char *text, lv_event_cb_t event_cb, void *user_data); +static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *text); + 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 _settings_screen_update_labels_language(SettingsScreen_t * const settingsScreen) { - //Update the header's title + // Update the header's title common_screen_header_update_title(translation_get_word(TRANSLATION_SETTINGS)); - // And all other labels + // All items in the menu list + update_menu_list_item_text(settingsScreen->time_and_date_item, translation_get_word(TRANSLATION_TIME_AND_DATE)); + update_menu_list_item_text(settingsScreen->display_item, translation_get_word(TRANSLATION_DISPLAY)); + update_menu_list_item_text(settingsScreen->notifications_item, translation_get_word(TRANSLATION_NOTIFICATIONS)); + update_menu_list_item_text(settingsScreen->connectivity_item, translation_get_word(TRANSLATION_CONNECTIVITY)); + update_menu_list_item_text(settingsScreen->language_item, translation_get_word(TRANSLATION_LANGUAGE)); + update_menu_list_item_text(settingsScreen->about_item, translation_get_word(TRANSLATION_ABOUT)); } static void gesture_event_cb(lv_event_t *e) @@ -114,6 +123,7 @@ static void time_roller_cb(lv_event_t *e) static void time_format_cb(lv_event_t *e) { SettingsScreen_t *settingsScreen = e->user_data; + bool is_24H__hour_format = true; if(e->target == settingsScreen->checkbox_time_12H) { @@ -121,6 +131,7 @@ static void time_format_cb(lv_event_t *e) lv_obj_clear_flag(settingsScreen->checkbox_time_12H, LV_OBJ_FLAG_CHECKABLE); lv_obj_add_flag(settingsScreen->checkbox_time_24H, LV_OBJ_FLAG_CHECKABLE); lv_obj_clear_state(settingsScreen->checkbox_time_24H, LV_STATE_CHECKED); + is_24H__hour_format = false; } else if(e->target == settingsScreen->checkbox_time_24H) { @@ -128,7 +139,11 @@ static void time_format_cb(lv_event_t *e) lv_obj_clear_flag(settingsScreen->checkbox_time_24H, LV_OBJ_FLAG_CHECKABLE); lv_obj_clear_state(settingsScreen->checkbox_time_12H, LV_STATE_CHECKED); lv_obj_add_flag(settingsScreen->checkbox_time_12H, LV_OBJ_FLAG_CHECKABLE); + is_24H__hour_format = true; } + + if(settingsScreen->settingsScreenAPIInterface.setTimeFormatSettingsCb) + settingsScreen->settingsScreenAPIInterface.setTimeFormatSettingsCb(&is_24H__hour_format, SETTING_MODE_SET); } static void brightness_slider_cb(lv_event_t *e) @@ -236,20 +251,6 @@ static void about_refresh_timer_cb(lv_timer_t *timer) _set_battery_voltage_to_label(settingsScreen); } -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); - lv_obj_t *label = lv_obj_get_child(btn, 0); - if(label) - { - lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP); - lv_obj_set_style_pad_right(btn, 0, LV_PART_MAIN); - } - - lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, user_data); - return btn; -} - static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen) { lv_obj_clean(settingsScreen->side_screen); @@ -298,6 +299,8 @@ static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen) lv_label_set_text_static(label, "Time Format :"); lv_obj_align_to(label, settingsScreen->hour_roller, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10); + bool is_24H_format = true; + if(settingsScreen->settingsScreenAPIInterface.setTimeFormatSettingsCb)settingsScreen->settingsScreenAPIInterface.setTimeFormatSettingsCb(&is_24H_format, SETTING_MODE_GET); settingsScreen->checkbox_time_12H = lv_checkbox_create(settingsScreen->side_screen); lv_checkbox_set_text(settingsScreen->checkbox_time_12H, "12H"); lv_obj_set_style_radius(settingsScreen->checkbox_time_12H, LV_RADIUS_CIRCLE, LV_PART_INDICATOR); @@ -306,11 +309,21 @@ static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen) settingsScreen->checkbox_time_24H = lv_checkbox_create(settingsScreen->side_screen); lv_checkbox_set_text(settingsScreen->checkbox_time_24H, "24H"); - lv_obj_add_state(settingsScreen->checkbox_time_24H, LV_STATE_CHECKED); lv_obj_set_style_radius(settingsScreen->checkbox_time_24H, LV_RADIUS_CIRCLE, LV_PART_INDICATOR); lv_obj_align_to(settingsScreen->checkbox_time_24H, settingsScreen->checkbox_time_12H, LV_ALIGN_OUT_RIGHT_TOP, 10, 0); lv_obj_add_event_cb(settingsScreen->checkbox_time_24H, &(time_format_cb), LV_EVENT_CLICKED, settingsScreen); + if(is_24H_format) + { + lv_obj_add_state(settingsScreen->checkbox_time_24H, LV_STATE_CHECKED); + lv_obj_clear_flag(settingsScreen->checkbox_time_24H, LV_OBJ_FLAG_CHECKABLE); + } + else + { + lv_obj_add_state(settingsScreen->checkbox_time_12H, LV_STATE_CHECKED); + lv_obj_clear_flag(settingsScreen->checkbox_time_12H, LV_OBJ_FLAG_CHECKABLE); + } + label = lv_label_create(settingsScreen->side_screen); lv_label_set_text_static(label, "Date :"); lv_obj_align_to(label, settingsScreen->checkbox_time_12H, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10); @@ -658,12 +671,12 @@ void settings_screen_create(SettingsScreen_t * const settingsScreen) lv_obj_set_scroll_dir(settingsScreen->side_screen, LV_DIR_VER); //We add all the menu list items - settingsScreen->time_and_date_item = add_menu_list_item(menu_list, "Time & Date", &(menu_list_item_event_handler), settingsScreen); - settingsScreen->display_item = add_menu_list_item(menu_list, "Display", &(menu_list_item_event_handler), settingsScreen); - settingsScreen->notifications_item = add_menu_list_item(menu_list, "Notifications", &(menu_list_item_event_handler), settingsScreen); - settingsScreen->connectivity_item = add_menu_list_item(menu_list, "Connectivity", &(menu_list_item_event_handler), settingsScreen); - settingsScreen->language_item = add_menu_list_item(menu_list, "Language", &(menu_list_item_event_handler), settingsScreen); - settingsScreen->about_item = add_menu_list_item(menu_list, "About", &(menu_list_item_event_handler), settingsScreen); + settingsScreen->time_and_date_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_TIME_AND_DATE), &(menu_list_item_event_handler), settingsScreen); + settingsScreen->display_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_DISPLAY), &(menu_list_item_event_handler), settingsScreen); + settingsScreen->notifications_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_NOTIFICATIONS), &(menu_list_item_event_handler), settingsScreen); + settingsScreen->connectivity_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_CONNECTIVITY), &(menu_list_item_event_handler), settingsScreen); + settingsScreen->language_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_LANGUAGE), &(menu_list_item_event_handler), settingsScreen); + settingsScreen->about_item = add_menu_list_item(menu_list, translation_get_word(TRANSLATION_ABOUT), &(menu_list_item_event_handler), settingsScreen); //We register the event callback to handle gesture lv_obj_add_event_cb(settingsScreen->display, &(gesture_event_cb), LV_EVENT_GESTURE, settingsScreen); @@ -751,3 +764,26 @@ static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScree sprintf(settingsScreen->batteryVoltage.batteryVoltageText, "%u mV", voltage); lv_label_set_text_static(settingsScreen->batteryVoltage.batteryVoltageLabel, settingsScreen->batteryVoltage.batteryVoltageText); } + +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); + lv_obj_t *label = lv_obj_get_child(btn, 0); + if(label) + { + lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP); + lv_obj_set_style_pad_right(btn, 0, LV_PART_MAIN); + } + + lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, user_data); + return btn; +} + +static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *text) +{ + lv_obj_t *label = lv_obj_get_child(menu_list_item, 0); + if(label) + { + lv_label_set_text(label, text); + } +} diff --git a/src/W800_SDK_v1.00.10/app/gfx/settings_screen.h b/src/W800_SDK_v1.00.10/app/gfx/settings_screen.h index 7280a8f..8f8af14 100644 --- a/src/W800_SDK_v1.00.10/app/gfx/settings_screen.h +++ b/src/W800_SDK_v1.00.10/app/gfx/settings_screen.h @@ -12,6 +12,7 @@ typedef enum SettingMode typedef struct SettingsScreenAPIInterface { 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); void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode); void (*setOrientationSettingsCb)(uint8_t *orientation, SettingMode_e mode);