diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index c465f15029..289b56221d 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -1908,6 +1908,8 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "achievement_list"; case MENU_ENUM_LABEL_ADD_CONTENT_LIST: return "add_content"; + case MENU_ENUM_LABEL_CONFIGURATIONS_LIST: + return "configurations_list"; case MENU_ENUM_LABEL_ADD_TAB: return "add_tab"; case MENU_ENUM_LABEL_ARCHIVE_MODE: @@ -3010,6 +3012,8 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) return "Achievement List"; case MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST: return "Scan Content"; + case MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST: + return "Configurations"; case MENU_ENUM_LABEL_VALUE_ADD_TAB: return "Import content"; case MENU_ENUM_LABEL_VALUE_ARCHIVE_MODE: diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 501c1b6e4e..3b4f2b2956 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -307,6 +307,11 @@ static int deferred_push_add_content_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_ADD_CONTENT_LIST); } +static int deferred_push_configurations_list(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_CONFIGURATIONS_LIST); +} + static int deferred_push_load_content_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_LOAD_CONTENT_LIST); @@ -931,6 +936,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_ADD_CONTENT_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_add_content_list); break; + case MENU_ENUM_LABEL_CONFIGURATIONS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_configurations_list); + break; case MENU_ENUM_LABEL_LOAD_CONTENT_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_load_content_list); break; @@ -1093,6 +1101,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( { switch (label_hash) { + case MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_configurations_list); + break; case MENU_LABEL_DEFERRED_USER_BINDS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_user_binds_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 701577a43a..15c1b305a8 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3701,6 +3701,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_NETPLAY: case MENU_ENUM_LABEL_LOAD_CONTENT_LIST: case MENU_ENUM_LABEL_ADD_CONTENT_LIST: + case MENU_ENUM_LABEL_CONFIGURATIONS_LIST: case MENU_ENUM_LABEL_HELP_LIST: case MENU_ENUM_LABEL_INFORMATION_LIST: case MENU_ENUM_LABEL_CONTENT_SETTINGS: diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index e83426263d..93a6707896 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -116,6 +116,13 @@ static int action_get_add_content_list(const char *path, const char *label, return 0; } +static int action_get_configurations_list(const char *path, const char *label, + unsigned menu_type, char *s, size_t len) +{ + sanitize_to_string(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST), len); + return 0; +} + static int action_get_core_options_list(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { @@ -1198,6 +1205,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_ADD_CONTENT_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_add_content_list); break; + case MENU_ENUM_LABEL_CONFIGURATIONS_LIST: + BIND_ACTION_GET_TITLE(cbs, action_get_configurations_list); + break; case MENU_ENUM_LABEL_CORE_OPTIONS: BIND_ACTION_GET_TITLE(cbs, action_get_core_options_list); break; @@ -1501,6 +1511,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_DEFERRED_CORE_UPDATER_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_core_updater_list); break; + case MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST: + BIND_ACTION_GET_TITLE(cbs, action_get_configurations_list); + break; case MENU_LABEL_ADD_CONTENT_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_add_content_list); break; diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 11f81e4954..648852bac8 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -1738,13 +1738,7 @@ static int mui_list_push(void *data, void *userdata, entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - - entry.enum_idx = MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - - entry.enum_idx = MENU_ENUM_LABEL_SAVE_NEW_CONFIG; + entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); entry.enum_idx = MENU_ENUM_LABEL_START_VIDEO_PROCESSOR; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index ce2c906ba7..632caea135 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3594,13 +3594,7 @@ static int xmb_list_push(void *data, void *userdata, entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); #endif - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - - entry.enum_idx = MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); - - entry.enum_idx = MENU_ENUM_LABEL_SAVE_NEW_CONFIG; + entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); entry.enum_idx = MENU_ENUM_LABEL_START_VIDEO_PROCESSOR; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 00b7995b2f..f37648c921 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2869,6 +2869,29 @@ static int menu_displaylist_parse_information_list( return 0; } +static int menu_displaylist_parse_configurations_list( + menu_displaylist_info_t *info) +{ + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONFIGURATIONS), + msg_hash_to_str(MENU_ENUM_LABEL_CONFIGURATIONS), + MENU_ENUM_LABEL_CONFIGURATIONS, + MENU_SETTING_ACTION, 0, 0); + + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG), + msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG), + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, + MENU_SETTING_ACTION, 0, 0); + + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG), + msg_hash_to_str(MENU_ENUM_LABEL_SAVE_NEW_CONFIG), + MENU_ENUM_LABEL_SAVE_NEW_CONFIG, + MENU_SETTING_ACTION, 0, 0); + return 0; +} + static int menu_displaylist_parse_add_content_list( menu_displaylist_info_t *info) { @@ -4111,6 +4134,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) case DISPLAYLIST_CONTENT_SETTINGS: case DISPLAYLIST_INFORMATION_LIST: case DISPLAYLIST_ADD_CONTENT_LIST: + case DISPLAYLIST_CONFIGURATIONS_LIST: case DISPLAYLIST_SCAN_DIRECTORY_LIST: case DISPLAYLIST_LOAD_CONTENT_LIST: case DISPLAYLIST_USER_BINDS_LIST: @@ -4421,13 +4445,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) PARSE_ACTION, false); #endif menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CONFIGURATIONS, - PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, - PARSE_ACTION, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SAVE_NEW_CONFIG, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, PARSE_ACTION, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_HELP_LIST, @@ -5390,6 +5408,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) case DISPLAYLIST_ADD_CONTENT_LIST: ret = menu_displaylist_parse_add_content_list(info); + info->need_push = true; + info->need_refresh = true; + break; + case DISPLAYLIST_CONFIGURATIONS_LIST: + ret = menu_displaylist_parse_configurations_list(info); + info->need_push = true; info->need_refresh = true; break; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index d79c629f29..9f1a5a7a4c 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -144,6 +144,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_OPTIONS_SHADERS, DISPLAYLIST_NETPLAY, DISPLAYLIST_ADD_CONTENT_LIST, + DISPLAYLIST_CONFIGURATIONS_LIST, DISPLAYLIST_SCAN_DIRECTORY_LIST, DISPLAYLIST_ARCHIVE_ACTION, DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index d3e089b73a..cdb0e3abc9 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2235,6 +2235,14 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_RESTART_RETROARCH); #endif + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, + &group_info, + &subgroup_info, + parent_group); + CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_CONFIGURATIONS, diff --git a/msg_hash.h b/msg_hash.h index 096939274d..cd9c33d2c3 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -973,6 +973,8 @@ enum msg_hash_enums MENU_ENUM_LABEL_ADD_CONTENT_LIST, MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, MENU_ENUM_LABEL_VALUE_DONT_CARE, MENU_ENUM_LABEL_VALUE_LINEAR, @@ -2013,6 +2015,8 @@ enum msg_hash_enums #define MENU_LABEL_DEFERRED_CORE_CONTENT_LIST 0x76150c63U #define MENU_LABEL_DEFERRED_LAKKA_LIST 0x3db437c4U #define MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST 0x10b41d97U +#define MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST 0x679a1b0bU + /* Cheevos settings */