Added translations in the menu item list (on the left hand side of the configuration screen), added time format (12H/24H) setting restoration callback
This commit is contained in:
parent
d0c933c78c
commit
8d408b5125
@ -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 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 _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_rtc_time_to_label(SettingsScreen_t * const settingsScreen);
|
||||||
static void _set_battery_voltage_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)
|
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));
|
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)
|
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)
|
static void time_format_cb(lv_event_t *e)
|
||||||
{
|
{
|
||||||
SettingsScreen_t *settingsScreen = e->user_data;
|
SettingsScreen_t *settingsScreen = e->user_data;
|
||||||
|
bool is_24H__hour_format = true;
|
||||||
|
|
||||||
if(e->target == settingsScreen->checkbox_time_12H)
|
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_clear_flag(settingsScreen->checkbox_time_12H, LV_OBJ_FLAG_CHECKABLE);
|
||||||
lv_obj_add_flag(settingsScreen->checkbox_time_24H, 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);
|
lv_obj_clear_state(settingsScreen->checkbox_time_24H, LV_STATE_CHECKED);
|
||||||
|
is_24H__hour_format = false;
|
||||||
}
|
}
|
||||||
else if(e->target == settingsScreen->checkbox_time_24H)
|
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_flag(settingsScreen->checkbox_time_24H, LV_OBJ_FLAG_CHECKABLE);
|
||||||
lv_obj_clear_state(settingsScreen->checkbox_time_12H, LV_STATE_CHECKED);
|
lv_obj_clear_state(settingsScreen->checkbox_time_12H, LV_STATE_CHECKED);
|
||||||
lv_obj_add_flag(settingsScreen->checkbox_time_12H, LV_OBJ_FLAG_CHECKABLE);
|
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)
|
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);
|
_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)
|
static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
|
||||||
{
|
{
|
||||||
lv_obj_clean(settingsScreen->side_screen);
|
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_label_set_text_static(label, "Time Format :");
|
||||||
lv_obj_align_to(label, settingsScreen->hour_roller, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
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);
|
settingsScreen->checkbox_time_12H = lv_checkbox_create(settingsScreen->side_screen);
|
||||||
lv_checkbox_set_text(settingsScreen->checkbox_time_12H, "12H");
|
lv_checkbox_set_text(settingsScreen->checkbox_time_12H, "12H");
|
||||||
lv_obj_set_style_radius(settingsScreen->checkbox_time_12H, LV_RADIUS_CIRCLE, LV_PART_INDICATOR);
|
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);
|
settingsScreen->checkbox_time_24H = lv_checkbox_create(settingsScreen->side_screen);
|
||||||
lv_checkbox_set_text(settingsScreen->checkbox_time_24H, "24H");
|
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_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_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);
|
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);
|
label = lv_label_create(settingsScreen->side_screen);
|
||||||
lv_label_set_text_static(label, "Date :");
|
lv_label_set_text_static(label, "Date :");
|
||||||
lv_obj_align_to(label, settingsScreen->checkbox_time_12H, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
|
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);
|
lv_obj_set_scroll_dir(settingsScreen->side_screen, LV_DIR_VER);
|
||||||
|
|
||||||
//We add all the menu list items
|
//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->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, "Display", &(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, "Notifications", &(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, "Connectivity", &(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, "Language", &(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, "About", &(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
|
//We register the event callback to handle gesture
|
||||||
lv_obj_add_event_cb(settingsScreen->display, &(gesture_event_cb), LV_EVENT_GESTURE, settingsScreen);
|
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);
|
sprintf(settingsScreen->batteryVoltage.batteryVoltageText, "%u mV", voltage);
|
||||||
lv_label_set_text_static(settingsScreen->batteryVoltage.batteryVoltageLabel, settingsScreen->batteryVoltage.batteryVoltageText);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -12,6 +12,7 @@ typedef enum SettingMode
|
|||||||
typedef struct SettingsScreenAPIInterface
|
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 (*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 (*setBrightnessSettingsCb)(uint8_t *brightness, SettingMode_e mode);
|
||||||
void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode);
|
void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode);
|
||||||
void (*setOrientationSettingsCb)(uint8_t *orientation, SettingMode_e mode);
|
void (*setOrientationSettingsCb)(uint8_t *orientation, SettingMode_e mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user