feat(slint): offline cache manager + remove/redownload + Settings Offline page
Slices 3 + 4 of the offline-cache port. Slice 3 (controller, offline_cache.rs): - remove_album (maintenance::remove_album_cached_tracks + library rows + live row update), redownload_track / redownload_album(failed_only) (via select_redownload_targets + reset_track_for_redownload + spawn), clear_all (purge), open_folder (xdg-open / open the cache dir). Slice 4 (manager + Settings): - OfflineManagerView.slint: a standalone route (NavEntry::OfflineManager -> ContentView.offline-manager, mounted in AppShell, mirrors PlaylistManager). Stats bar (tracks count / size / limit / usage bar + edit-limit GB input + open-folder + clear-all) over a scrolling album-header + track-row list with a spinning/check/alert status glyph and per-row re-download / remove. - offline_manager.rs: builds the album->track rollup + stats from index.db (get_all_tracks), pushes [OfflineRow] + stats to OfflineManagerState; set_limit (in-memory, session-scoped) + reload_soon (refresh after a mutation). - OfflineManagerActions wired in main.rs (open/refresh/remove/redownload/ set-limit/clear-all/open-folder/play). - Settings gains an "Offline" section (OfflineSettings.slint): Manage offline cache (-> the manager), Open cache folder, Clear all. The Local-Library rows (show-in-library, repair) arrive with the Local Library port. qbz-slint compiles clean. cc
This commit is contained in:
10 files changed
+922
-2
No files matched your search
@@ -18,7 +18,7 @@ import { AppShell } from "shell/AppShell.slint";
|
||||
import { Toast } from "primitives/Toast.slint";
|
||||
|
||||
// Re-export the state globals so the Rust layer can populate them.
|
||||
export { HomeState, HomeActions, DiscoverBrowseState, DiscoverBrowseActions, ForYouState, MixState, GenreFilterState, GenreFilterActions, AlbumState, ArtistState, NavState, SessionState, SettingsState, AlbumActions, ArtistActions, ArtworkActions, NowPlayingState, QueueState, SearchState, SearchActions, NetworkSidebarState, NetworkSidebarActions, MusicianState, MusicianActions, LabelState, LabelActions, LocationViewState, LocationViewActions, FavoritesState, FavoritesActions, PlaylistPickerState, PlaylistPickerActions, PlaylistState, PlaylistActions, SidebarState, SidebarActions, CreatePlaylistState, CreatePlaylistActions, EditPlaylistState, EditPlaylistActions, CreateFolderState, CreateFolderActions, DragState, DragActions, PlaylistManagerState, PlaylistManagerActions, FolderEditState, FolderEditActions, ToastState } from "state.slint";
|
||||
export { HomeState, HomeActions, DiscoverBrowseState, DiscoverBrowseActions, ForYouState, MixState, GenreFilterState, GenreFilterActions, AlbumState, ArtistState, NavState, SessionState, SettingsState, AlbumActions, ArtistActions, ArtworkActions, NowPlayingState, QueueState, SearchState, SearchActions, NetworkSidebarState, NetworkSidebarActions, MusicianState, MusicianActions, LabelState, LabelActions, LocationViewState, LocationViewActions, FavoritesState, FavoritesActions, PlaylistPickerState, PlaylistPickerActions, PlaylistState, PlaylistActions, SidebarState, SidebarActions, CreatePlaylistState, CreatePlaylistActions, EditPlaylistState, EditPlaylistActions, CreateFolderState, CreateFolderActions, DragState, DragActions, PlaylistManagerState, PlaylistManagerActions, OfflineManagerState, OfflineManagerActions, FolderEditState, FolderEditActions, ToastState } from "state.slint";
|
||||
|
||||
// Which top-level screen is shown. The app starts on `splash` while it
|
||||
// restores a saved session, then resolves to `shell` or `login`.
|
||||
|
||||
Reference in new issue
Block a user