Refactor menu_cbs_get_value.c

This commit is contained in:
twinaphex 2019-12-02 06:47:51 +01:00
parent 71f4ff6b84
commit e7d2e7ebcb

View File

@ -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;
}