mirror of
https://github.com/libretro/RetroArch
synced 2025-04-01 04:20:27 +00:00
(XMB+Ozone) Category + History/Favorites icons (#13433)
* (XMB+Ozone) Icons for matching core option categories * (XMB+Ozone) Playlist content icon option for history/favorites
This commit is contained in:
parent
d017ce7b03
commit
17f63e6e39
@ -1333,6 +1333,8 @@ static const int default_content_favorites_size = 200;
|
|||||||
#define DEFAULT_PLAYLIST_SHOW_SUBLABELS true
|
#define DEFAULT_PLAYLIST_SHOW_SUBLABELS true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define DEFAULT_PLAYLIST_SHOW_HISTORY_ICONS PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT
|
||||||
|
|
||||||
/* Show the indices of playlist entries in
|
/* Show the indices of playlist entries in
|
||||||
* a menu-driver-specific fashion */
|
* a menu-driver-specific fashion */
|
||||||
#define DEFAULT_PLAYLIST_SHOW_ENTRY_IDX true
|
#define DEFAULT_PLAYLIST_SHOW_ENTRY_IDX true
|
||||||
|
@ -2298,6 +2298,7 @@ static struct config_uint_setting *populate_settings_uint(
|
|||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
SETTING_UINT("playlist_entry_remove_enable", &settings->uints.playlist_entry_remove_enable, true, DEFAULT_PLAYLIST_ENTRY_REMOVE_ENABLE, false);
|
SETTING_UINT("playlist_entry_remove_enable", &settings->uints.playlist_entry_remove_enable, true, DEFAULT_PLAYLIST_ENTRY_REMOVE_ENABLE, false);
|
||||||
SETTING_UINT("playlist_show_inline_core_name", &settings->uints.playlist_show_inline_core_name, true, DEFAULT_PLAYLIST_SHOW_INLINE_CORE_NAME, false);
|
SETTING_UINT("playlist_show_inline_core_name", &settings->uints.playlist_show_inline_core_name, true, DEFAULT_PLAYLIST_SHOW_INLINE_CORE_NAME, false);
|
||||||
|
SETTING_UINT("playlist_show_history_icons", &settings->uints.playlist_show_history_icons, true, DEFAULT_PLAYLIST_SHOW_HISTORY_ICONS, false);
|
||||||
SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, DEFAULT_PLAYLIST_SUBLABEL_RUNTIME_TYPE, false);
|
SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, DEFAULT_PLAYLIST_SUBLABEL_RUNTIME_TYPE, false);
|
||||||
SETTING_UINT("playlist_sublabel_last_played_style", &settings->uints.playlist_sublabel_last_played_style, true, DEFAULT_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, false);
|
SETTING_UINT("playlist_sublabel_last_played_style", &settings->uints.playlist_sublabel_last_played_style, true, DEFAULT_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, false);
|
||||||
|
|
||||||
|
@ -299,6 +299,7 @@ typedef struct settings
|
|||||||
|
|
||||||
unsigned playlist_entry_remove_enable;
|
unsigned playlist_entry_remove_enable;
|
||||||
unsigned playlist_show_inline_core_name;
|
unsigned playlist_show_inline_core_name;
|
||||||
|
unsigned playlist_show_history_icons;
|
||||||
unsigned playlist_sublabel_runtime_type;
|
unsigned playlist_sublabel_runtime_type;
|
||||||
unsigned playlist_sublabel_last_played_style;
|
unsigned playlist_sublabel_last_played_style;
|
||||||
|
|
||||||
|
@ -4738,6 +4738,10 @@ MSG_HASH(
|
|||||||
MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS,
|
MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS,
|
||||||
"playlist_show_sublabels"
|
"playlist_show_sublabels"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
"playlist_show_history_icons"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX,
|
MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX,
|
||||||
"playlist_show_entry_idx"
|
"playlist_show_entry_idx"
|
||||||
|
@ -5605,6 +5605,14 @@ MSG_HASH(
|
|||||||
MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS,
|
MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS,
|
||||||
"Show additional information for each playlist entry, such as current core association and runtime (if available). Has a variable performance impact."
|
"Show additional information for each playlist entry, such as current core association and runtime (if available). Has a variable performance impact."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
"Show Content Specific Icons in History and Favorites"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
"Show specific icons for each history and favorites playlist entry. Has a variable performance impact."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE,
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE,
|
||||||
"Core:"
|
"Core:"
|
||||||
@ -8371,6 +8379,14 @@ MSG_HASH(
|
|||||||
MENU_ENUM_LABEL_VALUE_NEAREST,
|
MENU_ENUM_LABEL_VALUE_NEAREST,
|
||||||
"Nearest"
|
"Nearest"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_MAIN,
|
||||||
|
"Main"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CONTENT,
|
||||||
|
"Content"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SYSTEM_NAME_USE_CONTENT_DIR,
|
MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SYSTEM_NAME_USE_CONTENT_DIR,
|
||||||
"<Content Directory>"
|
"<Content Directory>"
|
||||||
|
@ -978,6 +978,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_window_offset_y, ME
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_show_sublabels, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_show_sublabels, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_show_history_icons, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_HISTORY_ICONS)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_show_entry_idx, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_ENTRY_IDX)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_show_entry_idx, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_ENTRY_IDX)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_rgui_border_filler_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_rgui_border_filler_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_ENABLE)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_rgui_border_filler_thickness_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_rgui_border_filler_thickness_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE)
|
||||||
@ -4386,6 +4387,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||||||
case MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS:
|
case MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_show_sublabels);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_show_sublabels);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_PLAYLIST_SHOW_HISTORY_ICONS:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_show_history_icons);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX:
|
case MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_show_entry_idx);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_show_entry_idx);
|
||||||
break;
|
break;
|
||||||
|
@ -1596,7 +1596,8 @@ static void ozone_set_background_running_opacity(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
static uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||||
enum msg_hash_enums enum_idx, unsigned type, bool active)
|
enum msg_hash_enums enum_idx, const char *enum_path,
|
||||||
|
unsigned type, bool active)
|
||||||
{
|
{
|
||||||
switch (enum_idx)
|
switch (enum_idx)
|
||||||
{
|
{
|
||||||
@ -1607,7 +1608,6 @@ static uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
|||||||
#endif
|
#endif
|
||||||
case MENU_ENUM_LABEL_DISC_INFORMATION:
|
case MENU_ENUM_LABEL_DISC_INFORMATION:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_DISC];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_DISC];
|
||||||
case MENU_ENUM_LABEL_CORE_OPTIONS:
|
|
||||||
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
|
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS];
|
||||||
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
|
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
|
||||||
@ -1984,7 +1984,20 @@ static uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
|||||||
case FILE_TYPE_RDB_ENTRY:
|
case FILE_TYPE_RDB_ENTRY:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO];
|
||||||
case MENU_SETTING_ACTION_CORE_OPTIONS:
|
case MENU_SETTING_ACTION_CORE_OPTIONS:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS];
|
if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS)))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_VIDEO];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS)))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_AUDIO];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS)))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_INPUT_SETTINGS];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS)))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_OSD];
|
||||||
|
else if (string_is_equal(enum_path, "Media"))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RDB];
|
||||||
|
else if (string_is_equal(enum_path, "System"))
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_DRIVERS];
|
||||||
|
else
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS];
|
||||||
case MENU_SETTING_ACTION_CORE_OPTION_OVERRIDE_LIST:
|
case MENU_SETTING_ACTION_CORE_OPTION_OVERRIDE_LIST:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SETTING];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SETTING];
|
||||||
case MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS:
|
case MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS:
|
||||||
@ -4476,7 +4489,8 @@ static void ozone_compute_entries_position(
|
|||||||
OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO */
|
OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO */
|
||||||
if (ozone->is_playlist && entries_end == 1)
|
if (ozone->is_playlist && entries_end == 1)
|
||||||
{
|
{
|
||||||
uintptr_t tex = ozone_entries_icon_get_texture(ozone, entry.enum_idx, entry.type, false);
|
uintptr_t tex = ozone_entries_icon_get_texture(ozone,
|
||||||
|
entry.enum_idx, entry.path, entry.type, false);
|
||||||
ozone->empty_playlist = tex == ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO];
|
ozone->empty_playlist = tex == ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -4560,6 +4574,7 @@ static void ozone_draw_entries(
|
|||||||
unsigned video_info_height, video_info_width;
|
unsigned video_info_height, video_info_width;
|
||||||
bool menu_show_sublabels = settings->bools.menu_show_sublabels;
|
bool menu_show_sublabels = settings->bools.menu_show_sublabels;
|
||||||
bool use_smooth_ticker = settings->bools.menu_ticker_smooth;
|
bool use_smooth_ticker = settings->bools.menu_ticker_smooth;
|
||||||
|
unsigned show_history_icons = settings->uints.playlist_show_history_icons;
|
||||||
enum gfx_animation_ticker_type
|
enum gfx_animation_ticker_type
|
||||||
menu_ticker_type = (enum gfx_animation_ticker_type)
|
menu_ticker_type = (enum gfx_animation_ticker_type)
|
||||||
settings->uints.menu_ticker_type;
|
settings->uints.menu_ticker_type;
|
||||||
@ -4840,7 +4855,8 @@ border_iterate:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Icon */
|
/* Icon */
|
||||||
tex = ozone_entries_icon_get_texture(ozone, entry.enum_idx, entry.type, entry_selected);
|
tex = ozone_entries_icon_get_texture(ozone,
|
||||||
|
entry.enum_idx, entry.path, entry.type, entry_selected);
|
||||||
if (tex != ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING])
|
if (tex != ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING])
|
||||||
{
|
{
|
||||||
uintptr_t texture = tex;
|
uintptr_t texture = tex;
|
||||||
@ -4856,6 +4872,70 @@ border_iterate:
|
|||||||
else
|
else
|
||||||
texture = sidebar_node->content_icon;
|
texture = sidebar_node->content_icon;
|
||||||
}
|
}
|
||||||
|
/* History/Favorite console specific content icons */
|
||||||
|
else if ( entry.type == FILE_TYPE_RPL_ENTRY
|
||||||
|
&& show_history_icons)
|
||||||
|
{
|
||||||
|
switch (ozone->tabs[ozone->categories_selection_ptr])
|
||||||
|
{
|
||||||
|
case OZONE_SYSTEM_TAB_HISTORY:
|
||||||
|
case OZONE_SYSTEM_TAB_FAVORITES:
|
||||||
|
{
|
||||||
|
unsigned j = 0;
|
||||||
|
unsigned p = 0;
|
||||||
|
size_t icon_list_size = ozone_list_get_size(ozone, MENU_LIST_HORIZONTAL);
|
||||||
|
size_t playlist_size = 0;
|
||||||
|
playlist_t *playlist = NULL;
|
||||||
|
const struct playlist_entry
|
||||||
|
*playlist_entry = NULL;
|
||||||
|
|
||||||
|
/* Get current playlist */
|
||||||
|
playlist = playlist_get_cached();
|
||||||
|
if (!playlist)
|
||||||
|
break;
|
||||||
|
|
||||||
|
playlist_size = playlist_get_size(playlist);
|
||||||
|
if (i >= playlist_size)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Read playlist entry */
|
||||||
|
for (p = i; p < playlist_size && playlist_entry == NULL; p++)
|
||||||
|
{
|
||||||
|
playlist_get_index(playlist, p, &playlist_entry);
|
||||||
|
if (playlist_entry && !string_is_equal(playlist_entry->label, entry.path))
|
||||||
|
playlist_entry = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!playlist_entry)
|
||||||
|
break;
|
||||||
|
|
||||||
|
for (j = 0; j < icon_list_size; j++)
|
||||||
|
{
|
||||||
|
ozone_node_t *node = ozone->horizontal_list.list[j].userdata;
|
||||||
|
if (!node)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!string_is_empty(playlist_entry->db_name)
|
||||||
|
&& string_is_equal(ozone->horizontal_list.list[j].path, playlist_entry->db_name))
|
||||||
|
{
|
||||||
|
switch (show_history_icons)
|
||||||
|
{
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_MAIN:
|
||||||
|
texture = node->icon;
|
||||||
|
break;
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_CONTENT:
|
||||||
|
texture = node->content_icon;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Cheevos badges should not be recolored */
|
/* Cheevos badges should not be recolored */
|
||||||
if (!(
|
if (!(
|
||||||
|
@ -2538,11 +2538,11 @@ static void xmb_populate_entries(void *data,
|
|||||||
|
|
||||||
static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||||
xmb_node_t *core_node, xmb_node_t *node,
|
xmb_node_t *core_node, xmb_node_t *node,
|
||||||
enum msg_hash_enums enum_idx, unsigned type, bool active, bool checked)
|
enum msg_hash_enums enum_idx, const char *enum_path,
|
||||||
|
unsigned type, bool active, bool checked)
|
||||||
{
|
{
|
||||||
switch (enum_idx)
|
switch (enum_idx)
|
||||||
{
|
{
|
||||||
case MENU_ENUM_LABEL_CORE_OPTIONS:
|
|
||||||
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
|
case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
|
||||||
return xmb->textures.list[XMB_TEXTURE_CORE_OPTIONS];
|
return xmb->textures.list[XMB_TEXTURE_CORE_OPTIONS];
|
||||||
case MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_LIST:
|
case MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_LIST:
|
||||||
@ -2938,7 +2938,21 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
|||||||
case FILE_TYPE_RDB_ENTRY:
|
case FILE_TYPE_RDB_ENTRY:
|
||||||
return xmb->textures.list[XMB_TEXTURE_CORE_INFO];
|
return xmb->textures.list[XMB_TEXTURE_CORE_INFO];
|
||||||
case MENU_SETTING_ACTION_CORE_OPTIONS:
|
case MENU_SETTING_ACTION_CORE_OPTIONS:
|
||||||
return xmb->textures.list[XMB_TEXTURE_CORE_OPTIONS];
|
if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS)))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_VIDEO];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS)))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_AUDIO];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS)))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_INPUT_SETTINGS];
|
||||||
|
else if (string_is_equal(enum_path, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS)))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_OSD];
|
||||||
|
else if (string_is_equal(enum_path, "Media"))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_RDB];
|
||||||
|
else if (string_is_equal(enum_path, "System"))
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_DRIVERS];
|
||||||
|
else
|
||||||
|
return xmb->textures.list[XMB_TEXTURE_CORE_OPTIONS];
|
||||||
|
break;
|
||||||
case MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS:
|
case MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS:
|
||||||
return xmb->textures.list[XMB_TEXTURE_INPUT_REMAPPING_OPTIONS];
|
return xmb->textures.list[XMB_TEXTURE_INPUT_REMAPPING_OPTIONS];
|
||||||
case MENU_SETTING_ACTION_CORE_CHEAT_OPTIONS:
|
case MENU_SETTING_ACTION_CORE_CHEAT_OPTIONS:
|
||||||
@ -3168,6 +3182,7 @@ static int xmb_draw_item(
|
|||||||
settings->uints.menu_xmb_thumbnail_scale_factor;
|
settings->uints.menu_xmb_thumbnail_scale_factor;
|
||||||
bool menu_xmb_vertical_thumbnails = settings->bools.menu_xmb_vertical_thumbnails;
|
bool menu_xmb_vertical_thumbnails = settings->bools.menu_xmb_vertical_thumbnails;
|
||||||
bool menu_show_sublabels = settings->bools.menu_show_sublabels;
|
bool menu_show_sublabels = settings->bools.menu_show_sublabels;
|
||||||
|
unsigned show_history_icons = settings->uints.playlist_show_history_icons;
|
||||||
|
|
||||||
/* Initial ticker configuration */
|
/* Initial ticker configuration */
|
||||||
if (use_smooth_ticker)
|
if (use_smooth_ticker)
|
||||||
@ -3537,11 +3552,76 @@ static int xmb_draw_item(
|
|||||||
math_matrix_4x4 mymat_tmp;
|
math_matrix_4x4 mymat_tmp;
|
||||||
gfx_display_ctx_rotate_draw_t rotate_draw;
|
gfx_display_ctx_rotate_draw_t rotate_draw;
|
||||||
uintptr_t texture = xmb_icon_get_id(xmb, core_node, node,
|
uintptr_t texture = xmb_icon_get_id(xmb, core_node, node,
|
||||||
entry.enum_idx, entry_type, (i == current), entry.checked);
|
entry.enum_idx, entry.path, entry_type, (i == current), entry.checked);
|
||||||
float x = icon_x;
|
float x = icon_x;
|
||||||
float y = icon_y;
|
float y = icon_y;
|
||||||
float scale_factor = node->zoom;
|
float scale_factor = node->zoom;
|
||||||
|
|
||||||
|
/* History/Favorite console specific content icons */
|
||||||
|
if ( entry_type == FILE_TYPE_RPL_ENTRY
|
||||||
|
&& show_history_icons)
|
||||||
|
{
|
||||||
|
switch (xmb_get_system_tab(xmb, xmb->categories_selection_ptr))
|
||||||
|
{
|
||||||
|
case XMB_SYSTEM_TAB_HISTORY:
|
||||||
|
case XMB_SYSTEM_TAB_FAVORITES:
|
||||||
|
{
|
||||||
|
unsigned j = 0;
|
||||||
|
unsigned p = 0;
|
||||||
|
size_t icon_list_size = xmb_list_get_size(xmb, MENU_LIST_HORIZONTAL);
|
||||||
|
size_t playlist_size = 0;
|
||||||
|
playlist_t *playlist = NULL;
|
||||||
|
const struct playlist_entry
|
||||||
|
*playlist_entry = NULL;
|
||||||
|
|
||||||
|
/* Get current playlist */
|
||||||
|
playlist = playlist_get_cached();
|
||||||
|
if (!playlist)
|
||||||
|
break;
|
||||||
|
|
||||||
|
playlist_size = playlist_get_size(playlist);
|
||||||
|
if (i >= playlist_size)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Read playlist entry */
|
||||||
|
for (p = i; p < playlist_size && playlist_entry == NULL; p++)
|
||||||
|
{
|
||||||
|
playlist_get_index(playlist, p, &playlist_entry);
|
||||||
|
if (playlist_entry && !string_is_equal(playlist_entry->label, entry.path))
|
||||||
|
playlist_entry = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!playlist_entry)
|
||||||
|
break;
|
||||||
|
|
||||||
|
for (j = 0; j < icon_list_size; j++)
|
||||||
|
{
|
||||||
|
xmb_node_t *node = xmb_get_userdata_from_horizontal_list(xmb, j);
|
||||||
|
if (!node)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!string_is_empty(playlist_entry->db_name)
|
||||||
|
&& string_is_equal(xmb->horizontal_list.list[j].path, playlist_entry->db_name))
|
||||||
|
{
|
||||||
|
switch (show_history_icons)
|
||||||
|
{
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_MAIN:
|
||||||
|
texture = node->icon;
|
||||||
|
break;
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_CONTENT:
|
||||||
|
texture = node->content_icon;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rotate_draw.matrix = &mymat_tmp;
|
rotate_draw.matrix = &mymat_tmp;
|
||||||
rotate_draw.rotation = 0;
|
rotate_draw.rotation = 0;
|
||||||
rotate_draw.scale_x = scale_factor;
|
rotate_draw.scale_x = scale_factor;
|
||||||
|
@ -410,6 +410,14 @@ enum playlist_entry_remove_enable_type
|
|||||||
PLAYLIST_ENTRY_REMOVE_ENABLE_LAST
|
PLAYLIST_ENTRY_REMOVE_ENABLE_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum playlist_show_history_icons_type
|
||||||
|
{
|
||||||
|
PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT = 0,
|
||||||
|
PLAYLIST_SHOW_HISTORY_ICONS_MAIN,
|
||||||
|
PLAYLIST_SHOW_HISTORY_ICONS_CONTENT,
|
||||||
|
PLAYLIST_SHOW_HISTORY_ICONS_LAST
|
||||||
|
};
|
||||||
|
|
||||||
enum quit_on_close_content_type
|
enum quit_on_close_content_type
|
||||||
{
|
{
|
||||||
QUIT_ON_CLOSE_CONTENT_DISABLED = 0,
|
QUIT_ON_CLOSE_CONTENT_DISABLED = 0,
|
||||||
|
@ -5544,6 +5544,7 @@ unsigned menu_displaylist_build_list(
|
|||||||
{MENU_ENUM_LABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, PARSE_ONLY_UINT, true},
|
{MENU_ENUM_LABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, PARSE_ONLY_UINT, true},
|
||||||
{MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_PLAYLIST_SHOW_ENTRY_IDX, PARSE_ONLY_BOOL, true},
|
||||||
{MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_PLAYLIST_SHOW_SUBLABELS, PARSE_ONLY_BOOL, true},
|
||||||
|
{MENU_ENUM_LABEL_PLAYLIST_SHOW_HISTORY_ICONS, PARSE_ONLY_UINT, true},
|
||||||
{MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_RUNTIME_TYPE, PARSE_ONLY_UINT, false},
|
{MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_RUNTIME_TYPE, PARSE_ONLY_UINT, false},
|
||||||
{MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, PARSE_ONLY_UINT, false},
|
{MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, PARSE_ONLY_UINT, false},
|
||||||
{MENU_ENUM_LABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, PARSE_ONLY_BOOL, true},
|
||||||
|
@ -6704,6 +6704,27 @@ static void setting_get_string_representation_uint_quit_on_close_content(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setting_get_string_representation_uint_playlist_show_history_icons(
|
||||||
|
rarch_setting_t *setting,
|
||||||
|
char *s, size_t len)
|
||||||
|
{
|
||||||
|
if (!setting)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (*setting->value.target.unsigned_integer)
|
||||||
|
{
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DONT_CARE), len);
|
||||||
|
break;
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_MAIN:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MAIN), len);
|
||||||
|
break;
|
||||||
|
case PLAYLIST_SHOW_HISTORY_ICONS_CONTENT:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT), len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void setting_get_string_representation_uint_menu_screensaver_timeout(
|
static void setting_get_string_representation_uint_menu_screensaver_timeout(
|
||||||
rarch_setting_t *setting,
|
rarch_setting_t *setting,
|
||||||
char *s, size_t len)
|
char *s, size_t len)
|
||||||
@ -18659,11 +18680,27 @@ static bool setting_append_list(
|
|||||||
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
|
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
|
||||||
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
|
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
|
||||||
|
|
||||||
/* Playlist entry index display is currently
|
/* Playlist entry index display and content specific history icon
|
||||||
* supported only by Ozone & XMB */
|
* are currently supported only by Ozone & XMB */
|
||||||
if (string_is_equal(settings->arrays.menu_driver, "xmb") ||
|
if (string_is_equal(settings->arrays.menu_driver, "xmb") ||
|
||||||
string_is_equal(settings->arrays.menu_driver, "ozone"))
|
string_is_equal(settings->arrays.menu_driver, "ozone"))
|
||||||
{
|
{
|
||||||
|
CONFIG_UINT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->uints.playlist_show_history_icons,
|
||||||
|
MENU_ENUM_LABEL_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
DEFAULT_PLAYLIST_SHOW_HISTORY_ICONS,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||||
|
(*list)[list_info->index - 1].get_string_representation =
|
||||||
|
&setting_get_string_representation_uint_playlist_show_history_icons;
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0, PLAYLIST_SHOW_HISTORY_ICONS_LAST-1, 1, true, true);
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->bools.playlist_show_entry_idx,
|
&settings->bools.playlist_show_entry_idx,
|
||||||
|
@ -1656,6 +1656,8 @@ enum msg_hash_enums
|
|||||||
MENU_ENUM_LABEL_VALUE_DONT_CARE,
|
MENU_ENUM_LABEL_VALUE_DONT_CARE,
|
||||||
MENU_ENUM_LABEL_VALUE_LINEAR,
|
MENU_ENUM_LABEL_VALUE_LINEAR,
|
||||||
MENU_ENUM_LABEL_VALUE_NEAREST,
|
MENU_ENUM_LABEL_VALUE_NEAREST,
|
||||||
|
MENU_ENUM_LABEL_VALUE_MAIN,
|
||||||
|
MENU_ENUM_LABEL_VALUE_CONTENT,
|
||||||
MENU_ENUM_LABEL_VALUE_UNKNOWN,
|
MENU_ENUM_LABEL_VALUE_UNKNOWN,
|
||||||
MENU_ENUM_LABEL_VALUE_USER,
|
MENU_ENUM_LABEL_VALUE_USER,
|
||||||
MENU_ENUM_LABEL_VALUE_KEYBOARD,
|
MENU_ENUM_LABEL_VALUE_KEYBOARD,
|
||||||
@ -3219,6 +3221,7 @@ enum msg_hash_enums
|
|||||||
MENU_LABEL(PLAYLIST_SHOW_INLINE_CORE_NAME),
|
MENU_LABEL(PLAYLIST_SHOW_INLINE_CORE_NAME),
|
||||||
MENU_LABEL(PLAYLIST_SORT_ALPHABETICAL),
|
MENU_LABEL(PLAYLIST_SORT_ALPHABETICAL),
|
||||||
MENU_LABEL(PLAYLIST_SHOW_SUBLABELS),
|
MENU_LABEL(PLAYLIST_SHOW_SUBLABELS),
|
||||||
|
MENU_LABEL(PLAYLIST_SHOW_HISTORY_ICONS),
|
||||||
MENU_LABEL(PLAYLIST_SHOW_ENTRY_IDX),
|
MENU_LABEL(PLAYLIST_SHOW_ENTRY_IDX),
|
||||||
MENU_LABEL(PLAYLIST_FUZZY_ARCHIVE_MATCH),
|
MENU_LABEL(PLAYLIST_FUZZY_ARCHIVE_MATCH),
|
||||||
MENU_LABEL(PLAYLIST_SUBLABEL_RUNTIME_TYPE),
|
MENU_LABEL(PLAYLIST_SUBLABEL_RUNTIME_TYPE),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user