feat(slint): offline button on every Qobuz track row + cache-whole-playlist

- TrackRow show-download now defaults to true: every Qobuz track row (album,
  artist, label, playlist, mix, search, favorites) carries the offline
  cloud/check button. Non-Qobuz surfaces (future Local Library / Plex) opt out
  by setting it false.
- Playlist header gains a "make offline" CircleAction -> ("playlist","cache")
  -> offline_cache::cache_playlist (get_playlist -> batch its tracks), mirroring
  the album-header action.

qbz-slint compiles clean.

cc
This commit is contained in:
vicrodh committed 2026-05-28 10:29:43 -06:00
1 parent 6572d6f33f
commit a7f2283c92
4 files changed
+52 -1

No files matched your search

@@ -375,6 +375,18 @@ export component PlaylistView inherits Rectangle {
}
}
}
// Make the whole playlist available offline.
VerticalLayout {
horizontal-stretch: 0;
alignment: center;
CircleAction {
icon: @image-url("../assets/icons/cloud-download.svg");
enabled: PlaylistState.tracks.length > 0;
clicked => {
root.media-action("playlist", PlaylistState.id, "cache");
}
}
}
// Edit (rename / delete) — only the user's own.
if PlaylistState.is-owner: VerticalLayout {
horizontal-stretch: 0;
@@ -32,7 +32,10 @@ export component TrackRow inherits Rectangle {
in property <bool> show-artwork: true;
in property <bool> show-album: false;
in property <bool> show-favorite: false;
in property <bool> show-download: false;
// On by default: every Qobuz track row carries the offline cloud/check
// button. A non-Qobuz surface (future Local Library / Plex rows, which are
// already local) should set this false.
in property <bool> show-download: true;
in property <bool> multi-select-mode: false;
// Custom-order reorder controls (up/down chevrons) at the leading
// edge — used by the playlist custom sort.