Merge pull request #5296 from RobLoach/favorites

Add to Favorites
This commit is contained in:
Twinaphex 2017-08-14 03:23:55 +02:00 committed by GitHub
commit 8d4e06856b
24 changed files with 289 additions and 99 deletions

View File

@ -1995,6 +1995,13 @@ TODO: Add a setting for these tweaks */
}
g_defaults.content_history = NULL;
if (g_defaults.content_favorites)
{
playlist_write_file(g_defaults.content_favorites);
playlist_free(g_defaults.content_favorites);
}
g_defaults.content_favorites = NULL;
if (g_defaults.music_history)
{
playlist_write_file(g_defaults.music_history);
@ -2038,6 +2045,13 @@ TODO: Add a setting for these tweaks */
settings->paths.path_content_history,
content_history_size);
RARCH_LOG("%s: [%s].\n",
msg_hash_to_str(MSG_LOADING_HISTORY_FILE),
settings->paths.path_content_favorites);
g_defaults.content_favorites = playlist_init(
settings->paths.path_content_favorites,
content_history_size);
RARCH_LOG("%s: [%s].\n",
msg_hash_to_str(MSG_LOADING_HISTORY_FILE),
settings->paths.path_content_music_history);
@ -2170,6 +2184,17 @@ TODO: Add a setting for these tweaks */
if (ui_companion_is_on_foreground())
ui_companion_driver_toggle();
break;
case CMD_EVENT_ADD_TO_FAVORITES:
playlist_push(
g_defaults.content_favorites,
path_get(RARCH_PATH_CONTENT),
NULL,
file_path_str(FILE_PATH_DETECT),
file_path_str(FILE_PATH_DETECT),
NULL,
NULL
);
break;
case CMD_EVENT_RESTART_RETROARCH:
if (!frontend_driver_set_fork(FRONTEND_FORK_RESTART))
return false;

View File

@ -134,6 +134,8 @@ enum event_command
CMD_EVENT_REBOOT,
/* Resume RetroArch when in menu. */
CMD_EVENT_RESUME,
/* Add a playlist entry to favorites. */
CMD_EVENT_ADD_TO_FAVORITES,
/* Toggles pause. */
CMD_EVENT_PAUSE_TOGGLE,
/* Pauses RetroArch. */

View File

@ -250,6 +250,7 @@ static bool xmb_shadows_enable = false;
static bool xmb_shadows_enable = true;
#endif
static bool xmb_show_settings = true;
static bool xmb_show_favorites = true;
#ifdef HAVE_IMAGEVIEWER
static bool xmb_show_images = true;
#endif

View File

@ -1020,6 +1020,8 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
#endif
SETTING_PATH("content_history_path",
settings->paths.path_content_history, false, NULL, true);
SETTING_PATH("content_favorites_path",
settings->paths.path_content_favorites, false, NULL, true);
SETTING_PATH("content_music_history_path",
settings->paths.path_content_music_history, false, NULL, true);
SETTING_PATH("content_video_history_path",
@ -1193,6 +1195,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef HAVE_XMB
SETTING_BOOL("xmb_shadows_enable", &settings->bools.menu_xmb_shadows_enable, true, xmb_shadows_enable, false);
SETTING_BOOL("xmb_show_settings", &settings->bools.menu_xmb_show_settings, true, xmb_show_settings, false);
SETTING_BOOL("xmb_show_favorites", &settings->bools.menu_xmb_show_favorites, true, xmb_show_favorites, false);
#ifdef HAVE_IMAGEVIEWER
SETTING_BOOL("xmb_show_images", &settings->bools.menu_xmb_show_images, true, xmb_show_images, false);
#endif
@ -1655,6 +1658,7 @@ static void config_set_defaults(void)
*settings->paths.path_core_options = '\0';
*settings->paths.path_content_history = '\0';
*settings->paths.path_content_favorites = '\0';
*settings->paths.path_content_music_history = '\0';
*settings->paths.path_content_image_history = '\0';
*settings->paths.path_content_video_history = '\0';
@ -2482,6 +2486,25 @@ static bool config_load_file(const char *path, bool set_defaults,
}
}
if (string_is_empty(settings->paths.path_content_favorites))
{
if (string_is_empty(settings->paths.directory_content_history))
{
fill_pathname_resolve_relative(
settings->paths.path_content_favorites,
path_get(RARCH_PATH_CONFIG),
file_path_str(FILE_PATH_CONTENT_FAVORITES),
sizeof(settings->paths.path_content_favorites));
}
else
{
fill_pathname_join(settings->paths.path_content_favorites,
settings->paths.directory_content_history,
file_path_str(FILE_PATH_CONTENT_FAVORITES),
sizeof(settings->paths.path_content_favorites));
}
}
if (string_is_empty(settings->paths.path_content_music_history))
{
if (string_is_empty(settings->paths.directory_content_history))

View File

@ -125,6 +125,7 @@ typedef struct settings
bool menu_show_core_updater;
bool menu_xmb_shadows_enable;
bool menu_xmb_show_settings;
bool menu_xmb_show_favorites;
bool menu_xmb_show_images;
bool menu_xmb_show_music;
bool menu_xmb_show_video;
@ -382,6 +383,7 @@ typedef struct settings
char path_softfilter_plugin[PATH_MAX_LENGTH];
char path_core_options[PATH_MAX_LENGTH];
char path_content_history[PATH_MAX_LENGTH];
char path_content_favorites[PATH_MAX_LENGTH];
char path_content_music_history[PATH_MAX_LENGTH];
char path_content_image_history[PATH_MAX_LENGTH];
char path_content_video_history[PATH_MAX_LENGTH];
@ -398,6 +400,7 @@ typedef struct settings
char directory_video_filter[PATH_MAX_LENGTH];
char directory_video_shader[PATH_MAX_LENGTH];
char directory_content_history[PATH_MAX_LENGTH];
char directory_content_favorites[PATH_MAX_LENGTH];
char directory_libretro[PATH_MAX_LENGTH];
char directory_cursor[PATH_MAX_LENGTH];
char directory_input_remapping[PATH_MAX_LENGTH];

View File

@ -102,6 +102,7 @@ struct defaults
#ifndef IS_SALAMANDER
playlist_t *content_history;
playlist_t *content_favorites;
#ifdef HAVE_IMAGEVIEWER
playlist_t *image_history;
#endif

View File

@ -34,6 +34,7 @@ enum file_path_enum
FILE_PATH_LOG_ERROR,
FILE_PATH_LOG_INFO,
FILE_PATH_CONTENT_HISTORY,
FILE_PATH_CONTENT_FAVORITES,
FILE_PATH_CONTENT_MUSIC_HISTORY,
FILE_PATH_CONTENT_VIDEO_HISTORY,
FILE_PATH_CONTENT_IMAGE_HISTORY,

View File

@ -194,6 +194,9 @@ const char *file_path_str(enum file_path_enum enum_idx)
case FILE_PATH_CONTENT_HISTORY:
str = "content_history.lpl";
break;
case FILE_PATH_CONTENT_FAVORITES:
str = "content_favorites.lpl";
break;
case FILE_PATH_CONTENT_MUSIC_HISTORY:
str = "content_music_history.lpl";
break;

View File

@ -1,4 +1,4 @@
/* RetroArch - A frontend for libretro.
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
@ -279,6 +279,9 @@ int menu_hash_get_help_chs_enum(enum msg_hash_enums msg, char *s, size_t len)
"截图文件将会存放在 \n"
"截图目录之中.");
break;
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
snprintf(s, len, "添加到收藏夹.");
break;
case MENU_ENUM_LABEL_RUN:
snprintf(s, len, "启动内容.");
break;

View File

@ -2710,6 +2710,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE,
"Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_FONT,
"Select a different main font to be used by the menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES,
"Show the favourites tab inside the main menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES,
"Show the image tab inside the main menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_MUSIC,

View File

@ -397,6 +397,8 @@ MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_SHADER,
"file_browser_shader")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_SHADER_PRESET,
"file_browser_shader_preset")
MSG_HASH(MENU_ENUM_LABEL_FAVORITES_TAB,
"favorites_tab")
MSG_HASH(MENU_ENUM_LABEL_FPS_SHOW,
"fps_show")
MSG_HASH(MENU_ENUM_LABEL_FRAME_THROTTLE_ENABLE,
@ -855,6 +857,8 @@ MSG_HASH(MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY,
"rgui_config_directory")
MSG_HASH(MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN,
"rgui_show_start_screen")
MSG_HASH(MENU_ENUM_LABEL_ADD_TO_FAVORITES,
"favorites_add")
MSG_HASH(MENU_ENUM_LABEL_RUN,
"collection")
MSG_HASH(MENU_ENUM_LABEL_RUN_MUSIC,
@ -1151,6 +1155,8 @@ MSG_HASH(MENU_ENUM_LABEL_XMB_SHOW_HISTORY,
"xmb_show_history")
MSG_HASH(MENU_ENUM_LABEL_XMB_SHOW_ADD,
"xmb_show_add")
MSG_HASH(MENU_ENUM_LABEL_XMB_SHOW_FAVORITES,
"xmb_show_favorites")
MSG_HASH(MENU_ENUM_LABEL_XMB_SHOW_IMAGES,
"xmb_show_images")
MSG_HASH(MENU_ENUM_LABEL_XMB_SHOW_MUSIC,

View File

@ -285,6 +285,9 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) {
"The screenshot will be stored inside the \n"
"Screenshot Directory.");
break;
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
snprintf(s, len, "Add the entry to your Favorites.");
break;
case MENU_ENUM_LABEL_RUN:
snprintf(s, len, "Start the content.");
break;

View File

@ -615,6 +615,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_FALSE,
"False")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO,
"Maximum Run Speed")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES_TAB,
"Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FPS_SHOW,
"Display Framerate")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE,
@ -1259,6 +1261,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN,
"Display Start Screen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG,
"Right Analog")
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES,
"Add to Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN,
"Run")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_MUSIC,
@ -1751,6 +1755,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_HISTORY,
"Show History Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_ADD,
"Show Import content Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_FAVORITES,
"Show Favorites Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_IMAGES,
"Show Image Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_MUSIC,
@ -2804,6 +2810,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_DELETE_ENTRY,
"Remove this entry from the collection.")
MSG_HASH(MENU_ENUM_SUBLABEL_INFORMATION,
"View more information about the content.")
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES,
"Add the entry to your favorites.")
MSG_HASH(MENU_ENUM_SUBLABEL_RUN,
"Start the content.")
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS,
@ -2917,6 +2925,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE,
"Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_FONT,
"Select a different main font to be used by the menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES,
"Show the favorites tab inside the main menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES,
"Show the image tab inside the main menu.")
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_MUSIC,

View File

@ -467,6 +467,7 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
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)) ||
@ -486,6 +487,7 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
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)) ||
@ -587,6 +589,7 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs,
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_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)) ||
@ -627,6 +630,7 @@ int menu_cbs_init_bind_left(menu_file_list_cbs_t *cbs,
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_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)) ||

View File

@ -915,7 +915,7 @@ static bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info
size_t default_info_length = def_info->len;
if (!string_is_empty(default_info_path))
fill_pathname_join(def_info->s,
fill_pathname_join(def_info->s,
default_info_dir, default_info_path,
default_info_length);
@ -936,7 +936,7 @@ static bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info
def_info->s, &info,
&supported);
/* We started the menu with 'Load Content', we are
/* We started the menu with 'Load Content', we are
* going to use the current core to load this. */
if (load_content_with_current_core)
{
@ -1396,11 +1396,11 @@ static int action_ok_playlist_entry_collection(const char *path,
playlist_get_index(playlist, selection_ptr,
&entry_path, &entry_label, &core_path, &core_name, NULL, NULL);
/* If the currently loaded core's name is equal
/* If the currently loaded core's name is equal
* to the core name from the playlist entry,
* then we directly load this game with the current core.
*/
if (system &&
if (system &&
string_is_equal(system->library_name, core_name))
{
if (playlist_initialized)
@ -1625,7 +1625,7 @@ static int action_ok_playlist_entry_start_content(const char *path,
new_core_path[0] = new_display_name[0] = '\0';
found_associated_core =
found_associated_core =
menu_content_playlist_find_associated_core(
path_base, new_core_path, sizeof(new_core_path));
@ -1730,7 +1730,7 @@ static int action_ok_audio_add_to_mixer_and_collection(const char *path,
fill_pathname_join(combined_path, menu->scratch2_buf,
menu->scratch_buf, sizeof(combined_path));
playlist_push(g_defaults.music_history,
playlist_push(g_defaults.music_history,
combined_path,
NULL,
"builtin",
@ -2538,7 +2538,7 @@ static int generic_action_ok_network(const char *path,
default:
break;
}
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
command_event(CMD_EVENT_NETWORK_INIT, NULL);
@ -3017,6 +3017,7 @@ default_action_ok_cmd_func(action_ok_restart_content, CMD_EVENT_RESET)
default_action_ok_cmd_func(action_ok_screenshot, CMD_EVENT_TAKE_SCREENSHOT)
default_action_ok_cmd_func(action_ok_disk_cycle_tray_status, CMD_EVENT_DISK_EJECT_TOGGLE )
default_action_ok_cmd_func(action_ok_shader_apply_changes, CMD_EVENT_SHADERS_APPLY_CHANGES )
default_action_ok_cmd_func(action_ok_add_to_favorites, CMD_EVENT_ADD_TO_FAVORITES)
static int action_ok_delete_entry(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
@ -3238,7 +3239,7 @@ static int action_ok_netplay_connect_room(const char *path,
netplay_room_list[idx - 3].port);
}
RARCH_LOG("[lobby] connecting to: %s with game: %s/%08x\n",
RARCH_LOG("[lobby] connecting to: %s with game: %s/%08x\n",
tmp_hostname,
netplay_room_list[idx - 3].gamename,
netplay_room_list[idx - 3].gamecrc);
@ -3967,7 +3968,7 @@ static int action_ok_netplay_disconnect(const char *path,
netplay_driver_ctl(RARCH_NETPLAY_CTL_DISCONNECT, NULL);
netplay_driver_ctl(RARCH_NETPLAY_CTL_DISABLE, NULL);
/* Re-enable rewind if it was enabled
/* Re-enable rewind if it was enabled
TODO: Add a setting for these tweaks */
if (settings->bools.rewind_enable)
command_event(CMD_EVENT_REWIND_INIT, NULL);
@ -4130,6 +4131,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_RESUME_CONTENT:
BIND_ACTION_OK(cbs, action_ok_resume_content);
break;
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
BIND_ACTION_OK(cbs, action_ok_add_to_favorites);
break;
case MENU_ENUM_LABEL_RESTART_CONTENT:
BIND_ACTION_OK(cbs, action_ok_restart_content);
break;

View File

@ -458,6 +458,7 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs,
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_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)) ||
@ -567,6 +568,7 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
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)) ||
@ -585,6 +587,7 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
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)) ||
@ -624,6 +627,7 @@ int menu_cbs_init_bind_right(menu_file_list_cbs_t *cbs,
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_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)) ||

View File

@ -233,6 +233,7 @@ default_sublabel_macro(action_bind_sublabel_netplay_refresh_rooms,
default_sublabel_macro(action_bind_sublabel_delete_entry, MENU_ENUM_SUBLABEL_DELETE_ENTRY)
default_sublabel_macro(action_bind_sublabel_information, MENU_ENUM_SUBLABEL_INFORMATION)
default_sublabel_macro(action_bind_sublabel_run, MENU_ENUM_SUBLABEL_RUN)
default_sublabel_macro(action_bind_sublabel_add_to_favorites, MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES)
default_sublabel_macro(action_bind_sublabel_menu_filebrowser_settings, MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS)
default_sublabel_macro(action_bind_sublabel_auto_remaps_enable, MENU_ENUM_SUBLABEL_AUTO_REMAPS_ENABLE)
default_sublabel_macro(action_bind_sublabel_auto_overrides_enable, MENU_ENUM_SUBLABEL_AUTO_OVERRIDES_ENABLE)
@ -280,6 +281,7 @@ default_sublabel_macro(action_bind_sublabel_menu_color_theme,
default_sublabel_macro(action_bind_sublabel_menu_wallpaper_opacity, MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY)
default_sublabel_macro(action_bind_sublabel_menu_ribbon_enable, MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE)
default_sublabel_macro(action_bind_sublabel_menu_font, MENU_ENUM_SUBLABEL_XMB_FONT)
default_sublabel_macro(action_bind_sublabel_menu_favorites_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES)
default_sublabel_macro(action_bind_sublabel_menu_images_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES)
default_sublabel_macro(action_bind_sublabel_menu_show_online_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER)
default_sublabel_macro(action_bind_sublabel_menu_show_core_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER)
@ -542,6 +544,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_XMB_SHOW_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_settings_tab);
break;
case MENU_ENUM_LABEL_XMB_SHOW_FAVORITES:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_favorites_tab);
break;
case MENU_ENUM_LABEL_XMB_SHOW_IMAGES:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_images_tab);
break;
@ -610,178 +615,181 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
BIND_ACTION_SUBLABEL(cbs, action_bind_dynamic_wallpapers_directory);
break;
case MENU_ENUM_LABEL_CONTENT_DIR:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_content_dir);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_content_dir);
break;
case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rgui_browser_directory);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rgui_browser_directory);
break;
case MENU_ENUM_LABEL_SYSTEM_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_system_directory);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_system_directory);
break;
case MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_entry_remove);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_entry_remove);
break;
case MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_threaded_data_runloop_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_threaded_data_runloop_enable);
break;
case MENU_ENUM_LABEL_SHOW_ADVANCED_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_show_advanced_settings);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_show_advanced_settings);
break;
case MENU_ENUM_LABEL_CORE_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_options);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_options);
break;
case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_input_remapping_options);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_input_remapping_options);
break;
case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_cheat_options);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_cheat_options);
break;
case MENU_ENUM_LABEL_SHADER_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_options);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_options);
break;
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_current_config_override_game);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_current_config_override_game);
break;
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_current_config_override_core);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_current_config_override_core);
break;
case MENU_ENUM_LABEL_RESTART_CONTENT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_restart_content);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_restart_content);
break;
case MENU_ENUM_LABEL_REWIND_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_meta_rewind);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_meta_rewind);
break;
case MENU_ENUM_LABEL_ACCOUNTS_LIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_accounts_list);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_accounts_list);
break;
case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_accounts_retro_achievements);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_accounts_retro_achievements);
break;
case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_undo_save_state);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_undo_save_state);
break;
case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_undo_load_state);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_undo_load_state);
break;
case MENU_ENUM_LABEL_STATE_SLOT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_state_slot);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_state_slot);
break;
case MENU_ENUM_LABEL_RESUME:
case MENU_ENUM_LABEL_RESUME_CONTENT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_resume_content);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_resume_content);
break;
case MENU_ENUM_LABEL_SAVE_STATE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_state);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_state);
break;
case MENU_ENUM_LABEL_LOAD_STATE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_load_state);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_load_state);
break;
case MENU_ENUM_LABEL_CLOSE_CONTENT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_close_content);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_close_content);
break;
case MENU_ENUM_LABEL_TAKE_SCREENSHOT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_take_screenshot);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_take_screenshot);
break;
case MENU_ENUM_LABEL_CURSOR_MANAGER:
case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cursor_manager);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cursor_manager);
break;
case MENU_ENUM_LABEL_DATABASE_MANAGER:
case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_database_manager);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_database_manager);
break;
case MENU_ENUM_LABEL_CORE_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_enable);
break;
case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_game_specific_options);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_game_specific_options);
break;
case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_auto_overrides_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_auto_overrides_enable);
break;
case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_auto_remaps_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_auto_remaps_enable);
break;
case MENU_ENUM_LABEL_MENU_FILE_BROWSER_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_filebrowser_settings);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_filebrowser_settings);
break;
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_add_to_favorites);
break;
case MENU_ENUM_LABEL_RUN:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run);
break;
case MENU_ENUM_LABEL_INFORMATION:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_information);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_information);
break;
case MENU_ENUM_LABEL_DELETE_ENTRY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_delete_entry);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_delete_entry);
break;
case MENU_ENUM_LABEL_NETPLAY_REFRESH_ROOMS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_refresh_rooms);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_refresh_rooms);
break;
case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_auto_extract_archive);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_auto_extract_archive);
break;
case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_buildbot_url);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_buildbot_url);
break;
case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_buildbot_assets_url);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_updater_buildbot_assets_url);
break;
case MENU_ENUM_LABEL_NETPLAY_CLIENT_SWAP_INPUT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_client_swap_input);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_client_swap_input);
break;
case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_sort_savefiles_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_sort_savefiles_enable);
break;
case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_sort_savestates_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_sort_savestates_enable);
break;
case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_swap_interval);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_swap_interval);
break;
case MENU_ENUM_LABEL_SCAN_FILE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_scan_file);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_scan_file);
break;
case MENU_ENUM_LABEL_SCAN_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_scan_directory);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_scan_directory);
break;
case MENU_ENUM_LABEL_NETPLAY_DISCONNECT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_disconnect);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_disconnect);
break;
case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_enable_client);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_enable_client);
break;
case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_enable_host);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_enable_host);
break;
case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_navigation_wraparound);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_navigation_wraparound);
break;
case MENU_ENUM_LABEL_BATTERY_LEVEL_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_battery_level_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_battery_level_enable);
break;
case MENU_ENUM_LABEL_TIMEDATE_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_timedate_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_timedate_enable);
break;
case MENU_ENUM_LABEL_THUMBNAILS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_thumbnails);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_thumbnails);
break;
case MENU_ENUM_LABEL_MOUSE_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_mouse_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_mouse_enable);
break;
case MENU_ENUM_LABEL_POINTER_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pointer_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pointer_enable);
break;
case MENU_ENUM_LABEL_STDIN_CMD_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_stdin_cmd_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_stdin_cmd_enable);
break;
case MENU_ENUM_LABEL_NETPLAY_PUBLIC_ANNOUNCE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_public_announce);
break;
case MENU_ENUM_LABEL_NETPLAY_NAT_TRAVERSAL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_nat_traversal);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_nat_traversal);
break;
case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_check_frames);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_check_frames);
break;
case MENU_ENUM_LABEL_NETPLAY_START_AS_SPECTATOR:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_start_as_spectator);
@ -793,40 +801,40 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_require_slaves);
break;
case MENU_ENUM_LABEL_NETPLAY_STATELESS_MODE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_stateless_mode);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_stateless_mode);
break;
case MENU_ENUM_LABEL_NETPLAY_PASSWORD:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_password);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_password);
break;
case MENU_ENUM_LABEL_NETPLAY_SPECTATE_PASSWORD:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_spectate_password);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_spectate_password);
break;
case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_tcp_udp_port);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_tcp_udp_port);
break;
case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_ip_address);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_netplay_ip_address);
break;
case MENU_ENUM_LABEL_OVERLAY_PRESET:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_preset);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_preset);
break;
case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_enable);
break;
case MENU_ENUM_LABEL_OVERLAY_OPACITY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_opacity);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_opacity);
break;
case MENU_ENUM_LABEL_OVERLAY_SCALE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_scale);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_scale);
break;
case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_dsp_plugin);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_dsp_plugin);
break;
case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_output_rate);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_output_rate);
break;
case MENU_ENUM_LABEL_AUDIO_DEVICE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_device);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_device);
break;
case MENU_ENUM_LABEL_AUDIO_WASAPI_EXCLUSIVE_MODE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_wasapi_exclusive_mode);
@ -838,61 +846,61 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_wasapi_sh_buffer_length);
break;
case MENU_ENUM_LABEL_MENU_WALLPAPER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_wallpaper);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_wallpaper);
break;
case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_dynamic_wallpaper);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_dynamic_wallpaper);
break;
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_filter_supported_extensions);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_filter_supported_extensions);
break;
case MENU_ENUM_LABEL_WIFI_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_wifi_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_wifi_driver);
break;
case MENU_ENUM_LABEL_RECORD_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_record_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_record_driver);
break;
case MENU_ENUM_LABEL_MENU_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_driver);
break;
case MENU_ENUM_LABEL_LOCATION_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_location_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_location_driver);
break;
case MENU_ENUM_LABEL_CAMERA_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_camera_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_camera_driver);
break;
case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_resampler_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_resampler_driver);
break;
case MENU_ENUM_LABEL_JOYPAD_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_joypad_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_joypad_driver);
break;
case MENU_ENUM_LABEL_INPUT_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_driver);
break;
case MENU_ENUM_LABEL_AUDIO_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_driver);
break;
case MENU_ENUM_LABEL_VIDEO_DRIVER:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_driver);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_driver);
break;
case MENU_ENUM_LABEL_PAUSE_LIBRETRO:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pause_libretro);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pause_libretro);
break;
case MENU_ENUM_LABEL_MENU_INPUT_SWAP_OK_CANCEL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_swap_ok_cancel);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_swap_ok_cancel);
break;
case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_autodetect_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_autodetect_enable);
break;
case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_remap_binds_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_remap_binds_enable);
break;
case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_autosave_interval);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_autosave_interval);
break;
case MENU_ENUM_LABEL_SAVESTATE_THUMBNAIL_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_savestate_thumbnail_enable);
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_savestate_thumbnail_enable);
break;
case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_savestate_auto_save);
@ -956,7 +964,7 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
break;
case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_physical_inputs_port);
break;
break;
case MENU_ENUM_LABEL_VIDEO_FONT_SIZE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_font_size);
break;

View File

@ -247,6 +247,8 @@ static int action_get_title_group_settings(const char *path, const char *label,
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MAIN_MENU), len);
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HISTORY_TAB)))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_HISTORY_TAB), len);
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES_TAB)))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES_TAB), len);
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB)))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_IMAGES_TAB), len);
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB)))

View File

@ -92,6 +92,7 @@ enum
XMB_TEXTURE_MAIN_MENU = 0,
XMB_TEXTURE_SETTINGS,
XMB_TEXTURE_HISTORY,
XMB_TEXTURE_FAVORITES,
XMB_TEXTURE_MUSICS,
#ifdef HAVE_FFMPEG
XMB_TEXTURE_MOVIES,
@ -128,6 +129,8 @@ enum
XMB_TEXTURE_FILE,
XMB_TEXTURE_FOLDER,
XMB_TEXTURE_ZIP,
XMB_TEXTURE_FAVORITE,
XMB_TEXTURE_ADD_FAVORITE,
XMB_TEXTURE_MUSIC,
XMB_TEXTURE_IMAGE,
XMB_TEXTURE_MOVIE,
@ -152,6 +155,7 @@ enum
XMB_SYSTEM_TAB_MAIN = 0,
XMB_SYSTEM_TAB_SETTINGS,
XMB_SYSTEM_TAB_HISTORY,
XMB_SYSTEM_TAB_FAVORITES,
XMB_SYSTEM_TAB_MUSIC,
#ifdef HAVE_FFMPEG
XMB_SYSTEM_TAB_VIDEO,
@ -304,6 +308,7 @@ typedef struct xmb_handle
#endif
xmb_node_t settings_tab_node;
xmb_node_t history_tab_node;
xmb_node_t favorites_tab_node;
xmb_node_t add_tab_node;
xmb_node_t netplay_tab_node;
@ -1576,6 +1581,8 @@ static xmb_node_t* xmb_get_node(xmb_handle_t *xmb, unsigned i)
#endif
case XMB_SYSTEM_TAB_HISTORY:
return &xmb->history_tab_node;
case XMB_SYSTEM_TAB_FAVORITES:
return &xmb->favorites_tab_node;
#ifdef HAVE_NETWORKING
case XMB_SYSTEM_TAB_NETPLAY:
return &xmb->netplay_tab_node;
@ -2047,6 +2054,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case MENU_ENUM_LABEL_CORE_OPTIONS:
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
return xmb->textures.list[XMB_TEXTURE_CORE_OPTIONS];
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
return xmb->textures.list[XMB_TEXTURE_ADD_FAVORITE];
case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
return xmb->textures.list[XMB_TEXTURE_INPUT_REMAPPING_OPTIONS];
case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS:
@ -2100,6 +2109,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
switch (xmb_get_system_tab(xmb, (unsigned)xmb->categories.selection_ptr))
{
case XMB_SYSTEM_TAB_FAVORITES:
return xmb->textures.list[XMB_TEXTURE_FAVORITE];
case XMB_SYSTEM_TAB_MUSIC:
return xmb->textures.list[XMB_TEXTURE_MUSIC];
#ifdef HAVE_IMAGEVIEWER
@ -3320,6 +3331,8 @@ static void *xmb_init(void **userdata, bool video_is_threaded)
xmb->tabs[xmb->system_tab_end] = XMB_SYSTEM_TAB_MAIN;
if (settings->bools.menu_xmb_show_settings)
xmb->tabs[++xmb->system_tab_end] = XMB_SYSTEM_TAB_SETTINGS;
if (settings->bools.menu_xmb_show_favorites)
xmb->tabs[++xmb->system_tab_end] = XMB_SYSTEM_TAB_FAVORITES;
if (settings->bools.menu_xmb_show_history)
xmb->tabs[++xmb->system_tab_end] = XMB_SYSTEM_TAB_HISTORY;
#ifdef HAVE_IMAGEVIEWER
@ -3471,6 +3484,10 @@ static const char *xmb_texture_path(unsigned id)
return "settings.png";
case XMB_TEXTURE_HISTORY:
return "history.png";
case XMB_TEXTURE_FAVORITES:
return "favorites.png";
case XMB_TEXTURE_ADD_FAVORITE:
return "add-favorite.png";
case XMB_TEXTURE_MUSICS:
return "musics.png";
#ifdef HAVE_FFMPEG
@ -3535,6 +3552,8 @@ static const char *xmb_texture_path(unsigned id)
return "zip.png";
case XMB_TEXTURE_MUSIC:
return "music.png";
case XMB_TEXTURE_FAVORITE:
return "favorites-content.png";
case XMB_TEXTURE_IMAGE:
return "image.png";
case XMB_TEXTURE_MOVIE:
@ -3597,6 +3616,10 @@ static void xmb_context_reset_textures(
xmb->history_tab_node.alpha = xmb->categories.active.alpha;
xmb->history_tab_node.zoom = xmb->categories.active.zoom;
xmb->favorites_tab_node.icon = xmb->textures.list[XMB_TEXTURE_FAVORITES];
xmb->favorites_tab_node.alpha = xmb->categories.active.alpha;
xmb->favorites_tab_node.zoom = xmb->categories.active.zoom;
xmb->music_tab_node.icon = xmb->textures.list[XMB_TEXTURE_MUSICS];
xmb->music_tab_node.alpha = xmb->categories.active.alpha;
xmb->music_tab_node.zoom = xmb->categories.active.zoom;
@ -3753,7 +3776,7 @@ static void xmb_list_clear(file_list_t *list)
size_t i;
size_t size = list->size;
menu_animation_ctx_tag tag = (uintptr_t)list;
menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag);
for (i = 0; i < size; ++i)
@ -3904,6 +3927,12 @@ static void xmb_list_cache(void *data, enum menu_list_type type, unsigned action
menu_stack->list[stack_size - 1].type =
MENU_HISTORY_TAB;
break;
case XMB_SYSTEM_TAB_FAVORITES:
menu_stack->list[stack_size - 1].label =
strdup(msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES_TAB));
menu_stack->list[stack_size - 1].type =
MENU_FAVORITES_TAB;
break;
#ifdef HAVE_NETWORKING
case XMB_SYSTEM_TAB_NETPLAY:
menu_stack->list[stack_size - 1].label =

View File

@ -2863,6 +2863,11 @@ static int menu_displaylist_parse_load_content_settings(
MENU_ENUM_LABEL_UNDO_SAVE_STATE,
MENU_SETTING_ACTION_LOADSTATE, 0, 0);
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_FAVORITES),
MENU_ENUM_LABEL_ADD_TO_FAVORITES, FILE_TYPE_PLAYLIST_ENTRY, 0, 0);
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_OPTIONS),
msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS),
@ -3835,6 +3840,11 @@ static bool menu_displaylist_push_internal(
if (menu_displaylist_ctl(DISPLAYLIST_HISTORY, info))
return true;
}
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES_TAB)))
{
if (menu_displaylist_ctl(DISPLAYLIST_FAVORITES, info))
return true;
}
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)))
{
if (menu_displaylist_ctl(DISPLAYLIST_SETTINGS_ALL, info))
@ -4362,6 +4372,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
return menu_displaylist_process(info);
return false;
}
else if (string_is_equal(info->path, file_path_str(FILE_PATH_CONTENT_FAVORITES)))
{
if (menu_displaylist_ctl(DISPLAYLIST_FAVORITES, info))
return menu_displaylist_process(info);
return false;
}
else
{
char path_playlist[PATH_MAX_LENGTH];
@ -4425,6 +4441,19 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_push = true;
}
break;
case DISPLAYLIST_FAVORITES:
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
menu_displaylist_parse_playlist_history(menu, info,
g_defaults.content_favorites,
"favorites",
settings->paths.path_content_favorites,
&ret);
if (ret == 0)
{
info->need_refresh = true;
info->need_push = true;
}
break;
case DISPLAYLIST_MUSIC_HISTORY:
if (settings->bools.history_list_enable)
menu_displaylist_parse_playlist_history(menu, info,
@ -5077,6 +5106,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_XMB_SHOW_SETTINGS,
PARSE_ONLY_BOOL, false);
// TODO: Find out why this Show Favorites Tab breaks the world.
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_XMB_SHOW_FAVORITES,
PARSE_ONLY_BOOL, false);
#ifdef HAVE_IMAGEVIEWER
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_XMB_SHOW_IMAGES,

View File

@ -61,6 +61,7 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_HORIZONTAL,
DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS,
DISPLAYLIST_HISTORY,
DISPLAYLIST_FAVORITES,
DISPLAYLIST_VIDEO_HISTORY,
DISPLAYLIST_MUSIC_HISTORY,
DISPLAYLIST_IMAGES_HISTORY,

View File

@ -139,6 +139,7 @@ enum menu_settings_type
MENU_SETTINGS,
MENU_SETTINGS_TAB,
MENU_HISTORY_TAB,
MENU_FAVORITES_TAB,
MENU_MUSIC_TAB,
MENU_VIDEO_TAB,
MENU_IMAGES_TAB,

View File

@ -5372,6 +5372,22 @@ static bool setting_append_list(
SD_FLAG_NONE);
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
CONFIG_BOOL(
list, list_info,
&settings->bools.menu_xmb_show_favorites,
MENU_ENUM_LABEL_XMB_SHOW_FAVORITES,
MENU_ENUM_LABEL_VALUE_XMB_SHOW_FAVORITES,
xmb_show_favorites,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
#ifdef HAVE_IMAGEVIEWER
CONFIG_BOOL(
list, list_info,

View File

@ -685,6 +685,7 @@ enum msg_hash_enums
MENU_LABEL(XMB_MENU_COLOR_THEME),
MENU_LABEL(XMB_SHADOWS_ENABLE),
MENU_LABEL(XMB_SHOW_SETTINGS),
MENU_LABEL(XMB_SHOW_FAVORITES),
MENU_LABEL(XMB_SHOW_IMAGES),
MENU_LABEL(XMB_SHOW_MUSIC),
MENU_LABEL(XMB_SHOW_VIDEO),
@ -733,6 +734,7 @@ enum msg_hash_enums
MENU_LABEL(HISTORY_LIST_ENABLE),
MENU_LABEL(CONTENT_HISTORY_SIZE),
MENU_LABEL(PLAYLIST_ENTRY_REMOVE),
MENU_LABEL(ADD_TO_FAVORITES),
MENU_LABEL(MENU_THROTTLE_FRAMERATE),
MENU_LABEL(NO_ACHIEVEMENTS_TO_DISPLAY),
MENU_LABEL(NO_ENTRIES_TO_DISPLAY),
@ -1196,6 +1198,7 @@ enum msg_hash_enums
MENU_LABEL(HORIZONTAL_MENU),
MENU_LABEL(SETTINGS_TAB),
MENU_LABEL(HISTORY_TAB),
MENU_LABEL(FAVORITES_TAB),
MENU_LABEL(ADD_TAB),
MENU_LABEL(NETPLAY_TAB),
MENU_LABEL(PLAYLISTS_TAB),