feat(slint): favorites albums search + sort + shuffle

Add an expandable search (title / artist), a sort QbzSelect
(Default / Title A-Z / Title Z-A / Artist A-Z) and a Shuffle header
action (play a random visible album) to the Albums tab. albums-visible
derives from the full albums set via derive_albums (shared model on the
no-filter/default fast path, filtered+sorted clone otherwise — the
label.rs::derive_releases pattern), and the count reflects the filter.

cc
This commit is contained in:
vicrodh committed 2026-05-26 23:09:17 -06:00
1 parent b4b11a59e5
commit 57bace3e1d
4 files changed
+152 -3

No files matched your search

+6
View File
@@ -1457,7 +1457,10 @@ export global FavoritesState {
in-out property <bool> tracks-multi-select: false;
in property <int> tracks-selected-count: 0;
in property <[AlbumCardItem]> albums: [];
in property <[AlbumCardItem]> albums-visible: []; // after search + sort (what the grid/list renders)
in-out property <string> albums-view-mode: "grid"; // "grid" | "list"
in-out property <string> albums-search: "";
in-out property <string> albums-sort-by: "default"; // default|title-asc|title-desc|artist-asc
in property <[FavoriteArtistItem]> artists: [];
in property <[FavoritePlaylistItem]> playlists: [];
in property <[FavoriteLabelItem]> labels: [];
@@ -1485,6 +1488,9 @@ export global FavoritesActions {
callback toggle-multi-select();
callback bulk-action(string /* select-all | remove-selected | clear */);
callback album-action(string /* album id */, string /* action */);
callback albums-search(string /* query */);
callback albums-set-sort(string /* sort key */);
callback albums-shuffle();
}
// A Qobuz mix detail page (DailyQ / WeeklyQ / FavQ / TopQ), opened