int menu_cbs_init_bind_right(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *menu_label, uint32_t label_hash) { if (!cbs) return menu_cbs_exit(); BIND_ACTION_RIGHT(cbs, bind_right_generic); if (type == MENU_SETTING_NO_ITEM) { if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HISTORY_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)) ) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); return 0; } } if (menu_cbs_init_bind_right_compare_label(cbs, label, label_hash, menu_label ) == 0) return 0; if (menu_cbs_init_bind_right_compare_type(cbs, type, menu_label ) == 0) return 0; return menu_cbs_exit(); }
int menu_cbs_init_bind_right(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, const char *menu_label, uint32_t label_hash, uint32_t menu_label_hash) { if (!cbs) return menu_cbs_exit(); BIND_ACTION_RIGHT(cbs, bind_right_generic); if (type == MENU_SETTING_NO_ITEM) { switch (menu_label_hash) { case MENU_VALUE_HORIZONTAL_MENU: case MENU_VALUE_MAIN_MENU: case 153956705: /* TODO/FIXME - dehardcode */ BIND_ACTION_RIGHT(cbs, action_right_mainmenu); return 0; default: break; } } if (menu_cbs_init_bind_right_compare_label(cbs, label, label_hash, menu_label_hash, elem0) == 0) return 0; if (menu_cbs_init_bind_right_compare_type(cbs, type, label_hash, menu_label_hash) == 0) return 0; return menu_cbs_exit(); }
int menu_cbs_init_bind_right(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, const char *menu_label, uint32_t label_hash, uint32_t menu_label_hash) { if (!cbs) return -1; BIND_ACTION_RIGHT(cbs, bind_right_generic); if (menu_cbs_init_bind_right_compare_label(cbs, label, label_hash, menu_label_hash, elem0) == 0) return 0; if (menu_cbs_init_bind_right_compare_type(cbs, type, label_hash, menu_label_hash) == 0) return 0; return -1; }
static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, const char *menu_label) { unsigned i; if (cbs->setting) { const char *parent_group = menu_setting_get_parent_group(cbs->setting); if (string_is_equal(parent_group, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) && (menu_setting_get_type(cbs->setting) == ST_GROUP)) { BIND_ACTION_RIGHT(cbs, action_right_scroll); return 0; } } for (i = 0; i < MAX_USERS; i++) { uint32_t label_setting_hash; char label_setting[PATH_MAX_LENGTH] = {0}; snprintf(label_setting, sizeof(label_setting), "input_player%d_joypad_index", i + 1); label_setting_hash = msg_hash_calculate(label_setting); if (label_hash != label_setting_hash) continue; BIND_ACTION_RIGHT(cbs, bind_right_generic); return 0; } if (string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB))) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); return 0; } if (strstr(label, "rdb_entry")) { BIND_ACTION_RIGHT(cbs, action_right_scroll); } else { if (cbs->enum_idx != MSG_UNKNOWN) { switch (cbs->enum_idx) { case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_scale_pass); break; case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_pass); break; case MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_default); break; case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_shader_num_passes); break; case MENU_ENUM_LABEL_CHEAT_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_cheat_num_passes); break; case MENU_ENUM_LABEL_SCREEN_RESOLUTION: BIND_ACTION_RIGHT(cbs, action_right_video_resolution); break; case MENU_ENUM_LABEL_NO_ITEMS: case MENU_ENUM_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE: if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)) ) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; } default: return -1; } } else { return -1; } } return 0; }
static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, unsigned type, const char *menu_label) { if (type >= MENU_SETTINGS_CHEAT_BEGIN && type <= MENU_SETTINGS_CHEAT_END) { BIND_ACTION_RIGHT(cbs, action_right_cheat); } #ifdef HAVE_SHADER_MANAGER else if (type >= MENU_SETTINGS_SHADER_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PARAMETER_LAST) { BIND_ACTION_RIGHT(cbs, shader_action_parameter_right); } else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) { BIND_ACTION_RIGHT(cbs, shader_action_parameter_preset_right); } #endif else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN && type <= MENU_SETTINGS_INPUT_DESC_END) { BIND_ACTION_RIGHT(cbs, action_right_input_desc); } else if ((type >= MENU_SETTINGS_PLAYLIST_ASSOCIATION_START)) { BIND_ACTION_RIGHT(cbs, playlist_association_right); } else if ((type >= MENU_SETTINGS_CORE_OPTION_START)) { BIND_ACTION_RIGHT(cbs, core_setting_right); } else { switch (type) { case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX: BIND_ACTION_RIGHT(cbs, disk_options_disk_idx_right); break; case FILE_TYPE_PLAIN: case FILE_TYPE_DIRECTORY: case FILE_TYPE_PARENT_DIRECTORY: case FILE_TYPE_CARCHIVE: case FILE_TYPE_IN_CARCHIVE: case FILE_TYPE_CORE: case FILE_TYPE_RDB: case FILE_TYPE_RDB_ENTRY: case FILE_TYPE_RPL_ENTRY: case FILE_TYPE_CURSOR: case FILE_TYPE_SHADER: case FILE_TYPE_SHADER_PRESET: case FILE_TYPE_IMAGE: case FILE_TYPE_OVERLAY: case FILE_TYPE_VIDEOFILTER: case FILE_TYPE_AUDIOFILTER: case FILE_TYPE_CONFIG: case FILE_TYPE_USE_DIRECTORY: case FILE_TYPE_PLAYLIST_ENTRY: case MENU_INFO_MESSAGE: case FILE_TYPE_DOWNLOAD_CORE: case FILE_TYPE_CHEAT: case FILE_TYPE_REMAP: case FILE_TYPE_MOVIE: case FILE_TYPE_MUSIC: case FILE_TYPE_IMAGEVIEWER: case FILE_TYPE_PLAYLIST_COLLECTION: case FILE_TYPE_DOWNLOAD_CORE_CONTENT: case FILE_TYPE_DOWNLOAD_THUMBNAIL_CONTENT: case FILE_TYPE_DOWNLOAD_URL: case FILE_TYPE_SCAN_DIRECTORY: case MENU_SETTING_GROUP: case MENU_SETTINGS_CORE_INFO_NONE: if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HISTORY_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)) ) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; } BIND_ACTION_RIGHT(cbs, action_right_scroll); break; case MENU_SETTING_ACTION: case FILE_TYPE_CONTENTLIST_ENTRY: BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; default: return -1; } } return 0; }
static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, const char *menu_label) { if (cbs->setting) { const char *parent_group = cbs->setting->parent_group; if (string_is_equal(parent_group, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) && (setting_get_type(cbs->setting) == ST_GROUP)) { BIND_ACTION_RIGHT(cbs, action_right_scroll); return 0; } } if (strstr(label, "input_player") && strstr(label, "_joypad_index")) { unsigned i; for (i = 0; i < MAX_USERS; i++) { uint32_t label_setting_hash; char label_setting[128]; label_setting[0] = '\0'; snprintf(label_setting, sizeof(label_setting), "input_player%d_joypad_index", i + 1); label_setting_hash = msg_hash_calculate(label_setting); if (label_hash != label_setting_hash) continue; BIND_ACTION_RIGHT(cbs, bind_right_generic); return 0; } } if (string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB))) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); return 0; } if (strstr(label, "rdb_entry")) { BIND_ACTION_RIGHT(cbs, action_right_scroll); } else { if (cbs->enum_idx != MSG_UNKNOWN) { switch (cbs->enum_idx) { case MENU_ENUM_LABEL_SUBSYSTEM_ADD: case MENU_ENUM_LABEL_SUBSYSTEM_LOAD: case MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM: BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; case MENU_ENUM_LABEL_CHEAT_DELETE_ALL: BIND_ACTION_RIGHT(cbs, action_right_cheat_delete_all); break; case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_scale_pass); break; case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_pass); break; case MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_default); break; case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES: BIND_ACTION_RIGHT(cbs, action_right_shader_watch_for_changes); break; case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_shader_num_passes); break; case MENU_ENUM_LABEL_CHEAT_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_cheat_num_passes); break; case MENU_ENUM_LABEL_SCREEN_RESOLUTION: BIND_ACTION_RIGHT(cbs, action_right_video_resolution); break; case MENU_ENUM_LABEL_OPEN_ARCHIVE_DETECT_CORE: case MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE: BIND_ACTION_RIGHT(cbs, action_right_scroll); break; case MENU_ENUM_LABEL_NO_ITEMS: case MENU_ENUM_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE: if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HISTORY_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)) ) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); } else { BIND_ACTION_RIGHT(cbs, action_right_scroll); } break; case MENU_ENUM_LABEL_START_VIDEO_PROCESSOR: case MENU_ENUM_LABEL_TAKE_SCREENSHOT: if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HISTORY_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_TAB)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)) || string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)) ) { BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; } default: return -1; } } else { return -1; } } return 0; }
static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, uint32_t menu_label_hash, const char *elem0) { unsigned i; if (cbs->setting) { const char *parent_group = menu_setting_get_parent_group(cbs->setting); uint32_t parent_group_hash = menu_hash_calculate(parent_group); if ((parent_group_hash == MENU_LABEL_SETTINGS) && (menu_setting_get_type(cbs->setting) == ST_GROUP)) { BIND_ACTION_RIGHT(cbs, action_right_scroll); return 0; } } for (i = 0; i < MAX_USERS; i++) { uint32_t label_setting_hash; char label_setting[PATH_MAX_LENGTH]; label_setting[0] = '\0'; snprintf(label_setting, sizeof(label_setting), "input_player%d_joypad_index", i + 1); label_setting_hash = menu_hash_calculate(label_setting); if (label_hash != label_setting_hash) continue; BIND_ACTION_RIGHT(cbs, bind_right_generic); return 0; } if (strstr(label, "rdb_entry")) { BIND_ACTION_RIGHT(cbs, action_right_scroll); } else { switch (label_hash) { case MENU_LABEL_SAVESTATE: case MENU_LABEL_LOADSTATE: BIND_ACTION_RIGHT(cbs, action_right_save_state); break; case MENU_LABEL_VIDEO_SHADER_SCALE_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_scale_pass); break; case MENU_LABEL_VIDEO_SHADER_FILTER_PASS: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_pass); break; case MENU_LABEL_VIDEO_SHADER_DEFAULT_FILTER: BIND_ACTION_RIGHT(cbs, action_right_shader_filter_default); break; case MENU_LABEL_VIDEO_SHADER_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_shader_num_passes); break; case MENU_LABEL_CHEAT_NUM_PASSES: BIND_ACTION_RIGHT(cbs, action_right_cheat_num_passes); break; case MENU_LABEL_SCREEN_RESOLUTION: BIND_ACTION_RIGHT(cbs, action_right_video_resolution); break; case MENU_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE: switch (menu_label_hash) { case MENU_VALUE_HORIZONTAL_MENU: case MENU_VALUE_MAIN_MENU: BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; } default: return -1; } } return 0; }
static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, unsigned type, uint32_t label_hash, uint32_t menu_label_hash) { if (type >= MENU_SETTINGS_CHEAT_BEGIN && type <= MENU_SETTINGS_CHEAT_END) { BIND_ACTION_RIGHT(cbs, action_right_cheat); } #ifdef HAVE_SHADER_MANAGER else if (type >= MENU_SETTINGS_SHADER_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PARAMETER_LAST) { BIND_ACTION_RIGHT(cbs, shader_action_parameter_right); } else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) { BIND_ACTION_RIGHT(cbs, shader_action_parameter_preset_right); } #endif else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN && type <= MENU_SETTINGS_INPUT_DESC_END) { BIND_ACTION_RIGHT(cbs, action_right_input_desc); } else if ((type >= MENU_SETTINGS_CORE_OPTION_START)) { BIND_ACTION_RIGHT(cbs, core_setting_right); } else { switch (type) { case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX: BIND_ACTION_RIGHT(cbs, disk_options_disk_idx_right); break; case MENU_FILE_PLAIN: case MENU_FILE_DIRECTORY: case MENU_FILE_CARCHIVE: case MENU_FILE_IN_CARCHIVE: case MENU_FILE_CORE: case MENU_FILE_RDB: case MENU_FILE_RDB_ENTRY: case MENU_FILE_RPL_ENTRY: case MENU_FILE_CURSOR: case MENU_FILE_SHADER: case MENU_FILE_SHADER_PRESET: case MENU_FILE_IMAGE: case MENU_FILE_OVERLAY: case MENU_FILE_VIDEOFILTER: case MENU_FILE_AUDIOFILTER: case MENU_FILE_CONFIG: case MENU_FILE_USE_DIRECTORY: case MENU_FILE_PLAYLIST_ENTRY: case MENU_FILE_DOWNLOAD_CORE: case MENU_FILE_CHEAT: case MENU_FILE_REMAP: case MENU_FILE_MOVIE: case MENU_FILE_MUSIC: case MENU_FILE_IMAGEVIEWER: case MENU_FILE_PLAYLIST_COLLECTION: case MENU_FILE_DOWNLOAD_CORE_CONTENT: case MENU_FILE_SCAN_DIRECTORY: case MENU_SETTING_GROUP: switch (menu_label_hash) { case MENU_VALUE_HORIZONTAL_MENU: case MENU_VALUE_MAIN_MENU: BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; default: BIND_ACTION_RIGHT(cbs, action_right_scroll); break; } case MENU_SETTING_ACTION: case MENU_FILE_CONTENTLIST_ENTRY: BIND_ACTION_RIGHT(cbs, action_right_mainmenu); break; default: return -1; } } return 0; }