diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 6239bff489..680bebd4a2 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -1590,195 +1590,207 @@ static int menu_cbs_init_bind_get_string_representation_compare_label( static int menu_cbs_init_bind_get_string_representation_compare_type( menu_file_list_cbs_t *cbs, unsigned type) { + unsigned i; + typedef struct info_range_list + { + unsigned min; + unsigned max; + void (*cb)(file_list_t* list, + unsigned *w, unsigned type, unsigned i, + const char *label, char *s, size_t len, + const char *path, + char *path_buf, size_t path_buf_size); + } info_range_list_t; + + info_range_list_t info_list[] = { #ifdef HAVE_AUDIOMIXER - if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN - && type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_audio_mixer_stream_name); - return 0; - } - else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN - && type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_audio_mixer_stream_volume); - } - else -#endif - if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN - && type <= MENU_SETTINGS_INPUT_DESC_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_input_desc); - } - else if (type >= MENU_SETTINGS_CHEAT_BEGIN - && type <= MENU_SETTINGS_CHEAT_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_cheat); - } - else if (type >= MENU_SETTINGS_PERF_COUNTERS_BEGIN - && type <= MENU_SETTINGS_PERF_COUNTERS_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_perf_counters); - } - else if (type >= MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN - && type <= MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_libretro_perf_counters); - } - else if (type >= MENU_SETTINGS_INPUT_DESC_KBD_BEGIN - && type <= MENU_SETTINGS_INPUT_DESC_KBD_END) - { - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_input_desc_kbd); - } - else - { - switch (type) { - case MENU_SETTINGS_CORE_OPTION_CREATE: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_core_option_create); - break; - case FILE_TYPE_CORE: - case FILE_TYPE_DIRECT_LOAD: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_core); - break; - case FILE_TYPE_PLAIN: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_plain); - break; - case FILE_TYPE_MOVIE: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_movie); - break; - case FILE_TYPE_MUSIC: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_music); - break; - case FILE_TYPE_IMAGE: - case FILE_TYPE_IMAGEVIEWER: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_imageviewer); - break; - case FILE_TYPE_USE_DIRECTORY: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_use_directory); - break; - case FILE_TYPE_DIRECTORY: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_directory); - break; - case FILE_TYPE_PARENT_DIRECTORY: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_parent_directory); - break; - case FILE_TYPE_CARCHIVE: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_carchive); - break; - case FILE_TYPE_OVERLAY: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_overlay); - break; -#ifdef HAVE_VIDEO_LAYOUT - case FILE_TYPE_VIDEO_LAYOUT: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_video_layout); - break; + MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN, + MENU_SETTINGS_AUDIO_MIXER_STREAM_END, + menu_action_setting_audio_mixer_stream_name + }, + { + MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN, + MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END, + menu_action_setting_audio_mixer_stream_volume + }, #endif - case FILE_TYPE_FONT: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_font); - break; - case FILE_TYPE_SHADER: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_shader); - break; - case FILE_TYPE_SHADER_PRESET: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_shader_preset); - break; - case FILE_TYPE_CONFIG: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_config); - break; - case FILE_TYPE_IN_CARCHIVE: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_in_carchive); - break; - case FILE_TYPE_VIDEOFILTER: - case FILE_TYPE_AUDIOFILTER: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_filter); - break; - case FILE_TYPE_DOWNLOAD_CORE: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_url_core); - break; - case FILE_TYPE_RDB: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_rdb); - break; - case FILE_TYPE_CURSOR: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_cursor); - break; - case FILE_TYPE_CHEAT: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_file_cheat); - break; - case MENU_SETTINGS_CHEAT_MATCH: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_cheat_match); - break; - case MENU_SETTING_SUBGROUP: - case MENU_SETTINGS_CUSTOM_BIND_ALL: - case MENU_SETTINGS_CUSTOM_BIND_DEFAULT_ALL: - case MENU_SETTING_ACTION: - case MENU_SETTING_ACTION_LOADSTATE: - case 7: /* Run */ - case MENU_SETTING_ACTION_DELETE_ENTRY: - case MENU_SETTING_ACTION_CORE_DISK_OPTIONS: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_more); - break; - case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX: - BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_menu_disk_index); - break; - case 31: /* Database entry */ - BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_db_entry); - break; - case 25: /* URL directory entries */ - case 26: /* URL entries */ - BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_entry_url); - break; - case MENU_SETTING_DROPDOWN_SETTING_INT_ITEM: - case MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM: - case MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM: - case MENU_SETTING_DROPDOWN_ITEM: - case MENU_SETTING_NO_ITEM: - BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_no_items); - break; - case 32: /* Recent history entry */ - case 65535: /* System info entry */ - BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_entry); - break; - default: -#if 0 - RARCH_LOG("type: %d\n", type); -#endif - BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label); - break; + { + MENU_SETTINGS_INPUT_DESC_BEGIN, + MENU_SETTINGS_INPUT_DESC_END, + menu_action_setting_disp_set_label_input_desc + }, + { + MENU_SETTINGS_CHEAT_BEGIN, + MENU_SETTINGS_CHEAT_END, + menu_action_setting_disp_set_label_cheat + }, + { + MENU_SETTINGS_PERF_COUNTERS_BEGIN, + MENU_SETTINGS_PERF_COUNTERS_END, + menu_action_setting_disp_set_label_perf_counters + }, + { + MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN, + MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_END, + menu_action_setting_disp_set_label_libretro_perf_counters + }, + { + MENU_SETTINGS_INPUT_DESC_KBD_BEGIN, + MENU_SETTINGS_INPUT_DESC_KBD_END, + menu_action_setting_disp_set_label_input_desc_kbd + }, + }; + + for (i = 0; i < ARRAY_SIZE(info_list); i++) + { + if (type >= info_list[i].min && type <= info_list[i].max) + { + BIND_ACTION_GET_VALUE(cbs, info_list[i].cb); + return 0; } } + switch (type) + { + case MENU_SETTINGS_CORE_OPTION_CREATE: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_core_option_create); + break; + case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_core); + break; + case FILE_TYPE_PLAIN: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_plain); + break; + case FILE_TYPE_MOVIE: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_movie); + break; + case FILE_TYPE_MUSIC: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_music); + break; + case FILE_TYPE_IMAGE: + case FILE_TYPE_IMAGEVIEWER: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_imageviewer); + break; + case FILE_TYPE_USE_DIRECTORY: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_use_directory); + break; + case FILE_TYPE_DIRECTORY: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_directory); + break; + case FILE_TYPE_PARENT_DIRECTORY: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_parent_directory); + break; + case FILE_TYPE_CARCHIVE: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_carchive); + break; + case FILE_TYPE_OVERLAY: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_overlay); + break; +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_video_layout); + break; +#endif + case FILE_TYPE_FONT: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_font); + break; + case FILE_TYPE_SHADER: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_shader); + break; + case FILE_TYPE_SHADER_PRESET: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_shader_preset); + break; + case FILE_TYPE_CONFIG: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_config); + break; + case FILE_TYPE_IN_CARCHIVE: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_in_carchive); + break; + case FILE_TYPE_VIDEOFILTER: + case FILE_TYPE_AUDIOFILTER: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_filter); + break; + case FILE_TYPE_DOWNLOAD_CORE: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_url_core); + break; + case FILE_TYPE_RDB: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_rdb); + break; + case FILE_TYPE_CURSOR: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_cursor); + break; + case FILE_TYPE_CHEAT: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_cheat); + break; + case MENU_SETTINGS_CHEAT_MATCH: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_cheat_match); + break; + case MENU_SETTING_SUBGROUP: + case MENU_SETTINGS_CUSTOM_BIND_ALL: + case MENU_SETTINGS_CUSTOM_BIND_DEFAULT_ALL: + case MENU_SETTING_ACTION: + case MENU_SETTING_ACTION_LOADSTATE: + case 7: /* Run */ + case MENU_SETTING_ACTION_DELETE_ENTRY: + case MENU_SETTING_ACTION_CORE_DISK_OPTIONS: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_more); + break; + case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_disk_index); + break; + case 31: /* Database entry */ + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_db_entry); + break; + case 25: /* URL directory entries */ + case 26: /* URL entries */ + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_entry_url); + break; + case MENU_SETTING_DROPDOWN_SETTING_INT_ITEM: + case MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM: + case MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM: + case MENU_SETTING_DROPDOWN_ITEM: + case MENU_SETTING_NO_ITEM: + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_no_items); + break; + case 32: /* Recent history entry */ + case 65535: /* System info entry */ + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_entry); + break; + default: +#if 0 + RARCH_LOG("type: %d\n", type); +#endif + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label); + break; + } + return 0; }