(Ozone+XMB) Add playlist icons under 'Load Content' (#14243)
This commit is contained in:
parent
79e7360938
commit
052cdce29b
|
@ -454,6 +454,7 @@ struct ozone_handle
|
||||||
size_t categories_selection_ptr; /* active tab id */
|
size_t categories_selection_ptr; /* active tab id */
|
||||||
size_t categories_active_idx_old;
|
size_t categories_active_idx_old;
|
||||||
size_t playlist_index;
|
size_t playlist_index;
|
||||||
|
size_t playlist_collection_offset;
|
||||||
|
|
||||||
size_t selection; /* currently selected entry */
|
size_t selection; /* currently selected entry */
|
||||||
size_t selection_old; /* previously selected entry (for fancy animation) */
|
size_t selection_old; /* previously selected entry (for fancy animation) */
|
||||||
|
@ -2089,6 +2090,8 @@ static uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||||
case FILE_TYPE_CORE:
|
case FILE_TYPE_CORE:
|
||||||
case FILE_TYPE_DIRECT_LOAD:
|
case FILE_TYPE_DIRECT_LOAD:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE];
|
||||||
|
case FILE_TYPE_PLAYLIST_COLLECTION:
|
||||||
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_FILE];
|
||||||
case FILE_TYPE_RDB:
|
case FILE_TYPE_RDB:
|
||||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RDB];
|
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RDB];
|
||||||
case FILE_TYPE_RDB_ENTRY:
|
case FILE_TYPE_RDB_ENTRY:
|
||||||
|
@ -5333,11 +5336,39 @@ border_iterate:
|
||||||
{
|
{
|
||||||
ozone_node_t *sidebar_node = (ozone_node_t*) file_list_get_userdata_at_offset(&ozone->horizontal_list, ozone->categories_selection_ptr - ozone->system_tab_end-1);
|
ozone_node_t *sidebar_node = (ozone_node_t*) file_list_get_userdata_at_offset(&ozone->horizontal_list, ozone->categories_selection_ptr - ozone->system_tab_end-1);
|
||||||
|
|
||||||
if (!sidebar_node || !sidebar_node->content_icon)
|
if (sidebar_node && sidebar_node->content_icon)
|
||||||
texture = tex;
|
|
||||||
else
|
|
||||||
texture = sidebar_node->content_icon;
|
texture = sidebar_node->content_icon;
|
||||||
}
|
}
|
||||||
|
/* "Load Content" playlists */
|
||||||
|
else if (ozone->tabs[ozone->categories_selection_ptr] == OZONE_SYSTEM_TAB_MAIN)
|
||||||
|
{
|
||||||
|
if (ozone_is_load_content_playlist(ozone))
|
||||||
|
{
|
||||||
|
const struct playlist_entry *pl_entry = NULL;
|
||||||
|
ozone_node_t *db_node = NULL;
|
||||||
|
|
||||||
|
playlist_get_index(playlist_get_cached(),
|
||||||
|
entry.entry_idx, &pl_entry);
|
||||||
|
|
||||||
|
if (pl_entry &&
|
||||||
|
!string_is_empty(pl_entry->db_name) &&
|
||||||
|
(db_node = RHMAP_GET_STR(ozone->playlist_db_node_map, pl_entry->db_name)))
|
||||||
|
texture = db_node->content_icon;
|
||||||
|
}
|
||||||
|
else if (ozone->depth == 3 && entry.type == FILE_TYPE_PLAYLIST_COLLECTION)
|
||||||
|
{
|
||||||
|
size_t i_playlist = 0;
|
||||||
|
ozone_node_t *sidebar_node;
|
||||||
|
|
||||||
|
if (i >= ozone->playlist_collection_offset)
|
||||||
|
i_playlist = i - ozone->playlist_collection_offset;
|
||||||
|
|
||||||
|
sidebar_node = (ozone_node_t*) file_list_get_userdata_at_offset(&ozone->horizontal_list, i_playlist);
|
||||||
|
|
||||||
|
if (sidebar_node && sidebar_node->icon)
|
||||||
|
texture = sidebar_node->icon;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* History/Favorite console specific content icons */
|
/* History/Favorite console specific content icons */
|
||||||
else if ( entry.type == FILE_TYPE_RPL_ENTRY
|
else if ( entry.type == FILE_TYPE_RPL_ENTRY
|
||||||
&& show_history_icons != PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT)
|
&& show_history_icons != PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT)
|
||||||
|
@ -10594,6 +10625,23 @@ static void ozone_populate_entries(void *data,
|
||||||
ozone->skip_thumbnail_reset = true;
|
ozone->skip_thumbnail_reset = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Determine the first playlist item under "Load Content > Playlists" */
|
||||||
|
ozone->playlist_collection_offset = 0;
|
||||||
|
if (settings->uints.menu_content_show_add_entry)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->uints.menu_content_show_contentless_cores)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_explore)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_favorites)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_images)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_music)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_video)
|
||||||
|
ozone->playlist_collection_offset++;
|
||||||
|
|
||||||
if (animate)
|
if (animate)
|
||||||
if (ozone->categories_selection_ptr == ozone->categories_active_idx_old)
|
if (ozone->categories_selection_ptr == ozone->categories_active_idx_old)
|
||||||
ozone_list_open(ozone, ozone_collapse_sidebar, !ozone->first_frame);
|
ozone_list_open(ozone, ozone_collapse_sidebar, !ozone->first_frame);
|
||||||
|
|
|
@ -341,6 +341,7 @@ typedef struct xmb_handle
|
||||||
size_t selection_ptr_old;
|
size_t selection_ptr_old;
|
||||||
size_t fullscreen_thumbnail_selection;
|
size_t fullscreen_thumbnail_selection;
|
||||||
size_t playlist_index;
|
size_t playlist_index;
|
||||||
|
size_t playlist_collection_offset;
|
||||||
|
|
||||||
/* size of the current list */
|
/* size of the current list */
|
||||||
size_t list_size;
|
size_t list_size;
|
||||||
|
@ -2542,6 +2543,23 @@ static void xmb_populate_entries(void *data,
|
||||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SAVESTATE_LIST));
|
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SAVESTATE_LIST));
|
||||||
xmb->is_state_slot = string_to_unsigned(path) == MENU_ENUM_LABEL_STATE_SLOT;
|
xmb->is_state_slot = string_to_unsigned(path) == MENU_ENUM_LABEL_STATE_SLOT;
|
||||||
|
|
||||||
|
/* Determine the first playlist item under "Load Content > Playlists" */
|
||||||
|
xmb->playlist_collection_offset = 0;
|
||||||
|
if (settings->uints.menu_content_show_add_entry)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->uints.menu_content_show_contentless_cores)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_explore)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_favorites)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_images)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_music)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
if (settings->bools.menu_content_show_video)
|
||||||
|
xmb->playlist_collection_offset++;
|
||||||
|
|
||||||
xmb_set_title(xmb);
|
xmb_set_title(xmb);
|
||||||
if (menu_dynamic_wallpaper_enable)
|
if (menu_dynamic_wallpaper_enable)
|
||||||
xmb_update_dynamic_wallpaper(xmb);
|
xmb_update_dynamic_wallpaper(xmb);
|
||||||
|
@ -2979,12 +2997,35 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||||
case FILE_TYPE_IN_CARCHIVE:
|
case FILE_TYPE_IN_CARCHIVE:
|
||||||
return xmb->textures.list[XMB_TEXTURE_FILE];
|
return xmb->textures.list[XMB_TEXTURE_FILE];
|
||||||
case FILE_TYPE_RPL_ENTRY:
|
case FILE_TYPE_RPL_ENTRY:
|
||||||
|
case FILE_TYPE_PLAYLIST_COLLECTION:
|
||||||
if (core_node)
|
if (core_node)
|
||||||
return core_node->content_icon;
|
return core_node->content_icon;
|
||||||
|
|
||||||
switch (xmb_get_system_tab(xmb,
|
switch (xmb_get_system_tab(xmb,
|
||||||
(unsigned)xmb->categories_selection_ptr))
|
(unsigned)xmb->categories_selection_ptr))
|
||||||
{
|
{
|
||||||
|
case XMB_SYSTEM_TAB_MAIN:
|
||||||
|
{
|
||||||
|
const struct playlist_entry *pl_entry = NULL;
|
||||||
|
xmb_node_t *db_node = NULL;
|
||||||
|
|
||||||
|
playlist_get_index(playlist_get_cached(),
|
||||||
|
0, &pl_entry);
|
||||||
|
|
||||||
|
if (pl_entry &&
|
||||||
|
!string_is_empty(pl_entry->db_name) &&
|
||||||
|
(db_node = RHMAP_GET_STR(xmb->playlist_db_node_map, pl_entry->db_name)))
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case FILE_TYPE_RPL_ENTRY:
|
||||||
|
return db_node->content_icon;
|
||||||
|
case FILE_TYPE_PLAYLIST_COLLECTION:
|
||||||
|
return db_node->icon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case XMB_SYSTEM_TAB_FAVORITES:
|
case XMB_SYSTEM_TAB_FAVORITES:
|
||||||
return xmb->textures.list[XMB_TEXTURE_FAVORITE];
|
return xmb->textures.list[XMB_TEXTURE_FAVORITE];
|
||||||
case XMB_SYSTEM_TAB_MUSIC:
|
case XMB_SYSTEM_TAB_MUSIC:
|
||||||
|
@ -3691,8 +3732,22 @@ static int xmb_draw_item(
|
||||||
float y = icon_y;
|
float y = icon_y;
|
||||||
float scale_factor = node->zoom;
|
float scale_factor = node->zoom;
|
||||||
|
|
||||||
|
/* "Load Content" playlists */
|
||||||
|
if (xmb->depth == 3 && entry_type == FILE_TYPE_PLAYLIST_COLLECTION)
|
||||||
|
{
|
||||||
|
size_t i_playlist = 0;
|
||||||
|
xmb_node_t *sidebar_node;
|
||||||
|
|
||||||
|
if (i >= xmb->playlist_collection_offset)
|
||||||
|
i_playlist = i - xmb->playlist_collection_offset;
|
||||||
|
|
||||||
|
sidebar_node = (xmb_node_t*) file_list_get_userdata_at_offset(&xmb->horizontal_list, i_playlist);
|
||||||
|
|
||||||
|
if (sidebar_node && sidebar_node->icon)
|
||||||
|
texture = sidebar_node->icon;
|
||||||
|
}
|
||||||
/* History/Favorite console specific content icons */
|
/* History/Favorite console specific content icons */
|
||||||
if ( entry_type == FILE_TYPE_RPL_ENTRY
|
else if (entry_type == FILE_TYPE_RPL_ENTRY
|
||||||
&& show_history_icons != PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT)
|
&& show_history_icons != PLAYLIST_SHOW_HISTORY_ICONS_DEFAULT)
|
||||||
{
|
{
|
||||||
switch (xmb_get_system_tab(xmb, xmb->categories_selection_ptr))
|
switch (xmb_get_system_tab(xmb, xmb->categories_selection_ptr))
|
||||||
|
|
Loading…
Reference in New Issue