From fef0d968cd233d6a668916c9a3192f020741e727 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 16 Jun 2016 21:40:13 +0200 Subject: [PATCH] Create DEFERRED_DRIVER_SETTINGS_LIST --- menu/cbs/menu_cbs_deferred_push.c | 8 +++++ menu/cbs/menu_cbs_ok.c | 19 +++++++++++ menu/intl/menu_hash_us.c | 4 +++ menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 53 +++++++++++++++++++++++++++++-- menu/menu_displaylist.h | 4 ++- menu/menu_hash.h | 9 ++++++ menu/menu_setting.c | 9 ++++++ 8 files changed, 104 insertions(+), 3 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index e3034a3847..2d77c74e0c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -94,6 +94,11 @@ static int deferred_push_accounts_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_ACCOUNTS_LIST); } +static int deferred_push_driver_settings_list(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_DRIVER_SETTINGS_LIST); +} + static int deferred_push_input_settings_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_INPUT_SETTINGS_LIST); @@ -816,6 +821,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_LABEL_DEFERRED_ACCOUNTS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_list); break; + case MENU_LABEL_DEFERRED_DRIVER_SETTINGS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_driver_settings_list); + break; case MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_settings_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 998201a0e1..f389660162 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -413,6 +413,12 @@ int generic_action_ok_displaylist_push(const char *path, info_path = path; info_label = menu_hash_to_str_enum(MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST); break; + case ACTION_OK_DL_DRIVER_SETTINGS_LIST: + info.directory_ptr = idx; + info.type = type; + info_path = path; + info_label = menu_hash_to_str_enum(MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST); + break; case ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST: info.directory_ptr = idx; info.type = type; @@ -2259,6 +2265,13 @@ static int action_ok_push_accounts_list(const char *path, ACTION_OK_DL_ACCOUNTS_LIST); } +static int action_ok_push_driver_settings_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, 0, 0, entry_idx, + ACTION_OK_DL_DRIVER_SETTINGS_LIST); +} + static int action_ok_push_input_settings_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2630,6 +2643,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_INPUT_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_input_settings_list); break; + case MENU_ENUM_LABEL_DRIVER_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_push_driver_settings_list); + break; case MENU_ENUM_LABEL_PLAYLIST_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_playlist_settings_list); break; @@ -2861,6 +2877,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_INPUT_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_input_settings_list); break; + case MENU_LABEL_DRIVER_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_push_driver_settings_list); + break; case MENU_LABEL_PLAYLIST_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_playlist_settings_list); break; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 31e640fcc6..2f5c4b4fa2 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -90,6 +90,8 @@ static const char *menu_hash_to_str_us_label_enum(enum menu_hash_enums msg) return "deferred_accounts_list"; case MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST: return "deferred_input_settings_list"; + case MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST: + return "deferred_driver_settings_list"; case MENU_ENUM_LABEL_ACCOUNTS_LIST: return "accounts_list"; case MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST: @@ -108,6 +110,8 @@ static const char *menu_hash_to_str_us_label_enum(enum menu_hash_enums msg) return "deferred_playlist_settings"; case MENU_ENUM_LABEL_INPUT_SETTINGS: return "input_settings"; + case MENU_ENUM_LABEL_DRIVER_SETTINGS: + return "driver_settings"; case MENU_ENUM_LABEL_DEBUG_PANEL_ENABLE: return "debug_panel_enable"; case MENU_ENUM_LABEL_HELP_SCANNING_CONTENT: diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 078655ce60..409985fe3d 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -54,6 +54,7 @@ enum ACTION_OK_DL_PUSH_DEFAULT, ACTION_OK_DL_DOWNLOADS_DIR, ACTION_OK_DL_INPUT_SETTINGS_LIST, + ACTION_OK_DL_DRIVER_SETTINGS_LIST, ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST, ACTION_OK_DL_PLAYLIST_SETTINGS_LIST, ACTION_OK_DL_ACCOUNTS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 2e869f7114..b603cb16b8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2172,6 +2172,9 @@ static int menu_displaylist_parse_settings_internal(void *data, case PARSE_ONLY_FLOAT: precond = ST_FLOAT; break; + case PARSE_ONLY_STRING_OPTIONS: + precond = ST_STRING_OPTIONS; + break; case PARSE_ONLY_GROUP: default: precond = ST_END_GROUP; @@ -2231,6 +2234,10 @@ static int menu_displaylist_parse_settings_internal(void *data, if (type == ST_FLOAT) break; goto loop; + case PARSE_ONLY_STRING_OPTIONS: + if (type == ST_STRING_OPTIONS) + break; + goto loop; } if (flags & SD_FLAG_ADVANCED && @@ -2257,6 +2264,7 @@ loop: case PARSE_ONLY_BOOL: case PARSE_ONLY_INT: case PARSE_ONLY_UINT: + case PARSE_ONLY_STRING_OPTIONS: case PARSE_ACTION: time_to_exit = true; break; @@ -2317,6 +2325,9 @@ static int menu_displaylist_parse_settings_internal_enum(void *data, case PARSE_ONLY_FLOAT: precond = ST_FLOAT; break; + case PARSE_ONLY_STRING_OPTIONS: + precond = ST_STRING_OPTIONS; + break; case PARSE_ONLY_GROUP: default: precond = ST_END_GROUP; @@ -2376,6 +2387,10 @@ static int menu_displaylist_parse_settings_internal_enum(void *data, if (type == ST_FLOAT) break; goto loop; + case PARSE_ONLY_STRING_OPTIONS: + if (type == ST_STRING_OPTIONS) + break; + goto loop; } if (flags & SD_FLAG_ADVANCED && @@ -2402,6 +2417,7 @@ loop: case PARSE_ONLY_BOOL: case PARSE_ONLY_INT: case PARSE_ONLY_UINT: + case PARSE_ONLY_STRING_OPTIONS: case PARSE_ACTION: time_to_exit = true; break; @@ -3631,6 +3647,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) case DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL: case DISPLAYLIST_VIDEO_FILTERS: case DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST: + case DISPLAYLIST_DRIVER_SETTINGS_LIST: case DISPLAYLIST_INPUT_SETTINGS_LIST: case DISPLAYLIST_PLAYLIST_SETTINGS_LIST: case DISPLAYLIST_AUDIO_FILTERS: @@ -3884,6 +3901,38 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } info->need_push = true; break; + case DISPLAYLIST_DRIVER_SETTINGS_LIST: + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_JOYPAD_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_VIDEO_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_AUDIO_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CAMERA_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_LOCATION_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_MENU_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_RECORD_DRIVER, + PARSE_ONLY_STRING_OPTIONS, false); + + info->need_refresh = true; + info->need_push = true; + break; case DISPLAYLIST_INPUT_SETTINGS_LIST: ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_INPUT_MAX_USERS, @@ -3943,8 +3992,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_SETTINGS_ALL: - ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str_enum(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS), PARSE_ONLY_GROUP, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_DRIVER_SETTINGS, PARSE_ACTION, false); ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str_enum(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS), PARSE_ONLY_GROUP, false); ret = menu_displaylist_parse_settings(menu, info, diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 7327b1f30d..d259af7093 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -41,7 +41,8 @@ enum menu_displaylist_parse_type PARSE_ONLY_FLOAT = (1 << 6), PARSE_ONLY_BIND = (1 << 7), PARSE_ONLY_GROUP = (1 << 8), - PARSE_SUB_GROUP = (1 << 9) + PARSE_ONLY_STRING_OPTIONS = (1 << 9), + PARSE_SUB_GROUP = (1 << 10) }; enum menu_displaylist_ctl_state @@ -97,6 +98,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_ACHIEVEMENT_LIST, DISPLAYLIST_USER_BINDS_LIST, DISPLAYLIST_ACCOUNTS_LIST, + DISPLAYLIST_DRIVER_SETTINGS_LIST, DISPLAYLIST_INPUT_SETTINGS_LIST, DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST, DISPLAYLIST_PLAYLIST_SETTINGS_LIST, diff --git a/menu/menu_hash.h b/menu/menu_hash.h index c62449227f..651a8b6805 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -124,6 +124,8 @@ enum menu_hash_enums MENU_ENUM_LABEL_INPUT_SETTINGS_BEGIN, MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST, + MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST, + MENU_ENUM_LABEL_DEFERRED_USER_BINDS_LIST, MENU_ENUM_LABEL_CHEEVOS_USERNAME, @@ -956,7 +958,10 @@ enum menu_hash_enums MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, + + MENU_ENUM_LABEL_DRIVER_SETTINGS, MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS, + MENU_ENUM_LABEL_VALUE_CORE_SETTINGS, MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, @@ -2395,6 +2400,10 @@ enum menu_hash_enums #define CB_CORE_THUMBNAILS_DOWNLOAD 0xc9d6519fU +#define MENU_LABEL_DRIVER_SETTINGS 0x1d9550e1U + +#define MENU_LABEL_DEFERRED_DRIVER_SETTINGS_LIST 0xaa5efefcU + const char *menu_hash_to_str_de_enum(enum menu_hash_enums msg); int menu_hash_get_help_de(uint32_t hash, char *s, size_t len); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 655ed36dff..caba076065 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3848,6 +3848,15 @@ static bool setting_append_list( menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_REBOOT); #endif + CONFIG_ACTION( + list, list_info, + menu_hash_to_str_enum(MENU_ENUM_LABEL_DRIVER_SETTINGS), + menu_hash_to_str_enum(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS), + &group_info, + &subgroup_info, + parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_DRIVER_SETTINGS); + CONFIG_ACTION( list, list_info, menu_hash_to_str_enum(MENU_ENUM_LABEL_INPUT_SETTINGS),