Yes "All Roles" can give a crap load of entries. It just shows what is there, and it seems a good principle to always have a way to see everything. Yet to see what users do with that information. Most will do nothing of course, but some may be inspired to create nodes/playlists that suit their interests e.g. a pianists node. This may mean a tidy up of their PERFORMER tags too, or using rules with wildcards e.g. "like" rather than "is".
Note I have a PR in to fix the bug that means having a smart playlist of say composers clicking on one does not show any albums or songs. There was an earlier PR that fixed that too, but it never received approveal (it wasn't rejected either, it is just lingering in limbo unreviewed).
The problem with determining what filtering is currently being used when a folder type node is displayed is not only limited to roles, although that does make the issue more obvious perhaps. I know that drilling down from "All Roles" does display the selected role in the title above the artists, I guess I just need to work out what is being populated and when.
Same happens with genre. Drilling from Genres node shows the selected genre, but create a node for a genre e.g.
Code:
<path>musicdb://artists/?genre=classical&albumartistonly=false</path>
or
Code:
<path>musicdb://albums?genre=classical</path>
and it does not.
Despite CMusicDatabase::GetFilter having the same path (with options) to process, and the same data being fetched, the piece of information isn't being set. I'm not sure where the skin gets that title by default. I am happy to make any core changes I can to support UI needs, but I do find the whole info label design rather a jumble so hard to know what approach to take for the best.
Edit:
With some pointers from @
Hitcher that the title comes from the CONTAINER_FOLDERNAME, I can see that the difference occurs in CMusicDatabaseDirectory::GetDirectory when the node is created from the path. So when the path is something like musicdb://genres/29, that is artists with genre=29 get displayed, the node gets its label by looking up genre "29". But when the path is musicdb://artists/?genre=classical, the genre is in the options not the path itself, it uses "artists".
See CDirectoryNodeOverview::GetLocalizedName and CDirectoryNodeArtist::GetLocalizedName.
Leaves me wondering about extracting options and adding to the folder name label. In the above example it is obvious as only one option value, but with
Code:
<path>musicdb://artists/?role=Composer&genre=classical&albumartistsonly=true</path>
does one say "Classical Composer Album Artist"?
Or is it just a matter of getting the node file name used for folder type, like happens for filter type nodes? Although that would be unwanted behaviour for the default nodes.
Better would be to put all the filtering into label(s) that the skin can use as they wish. For example am I only seeing album artists (what was that global setting?), have I excluded compliation albums etc.?
Any thoughts?