feat(library): playlists filter view and configurable default view

Add a fourth Playlists chip/page to the Library filter pager, rendered
as an album-style grid of playlist cells (search filters by name, page
provider short-circuits since playlists come from libraryCollections).
Add a defaultLibraryView setting (last used / all / albums / singles /
playlists) in Library settings, applied on startup and whenever the
shell switches back to the Library tab.
This commit is contained in:
zarzet
2026-07-27 02:12:35 +07:00
parent eaafeef1bb
commit ef3e019a3a
20 changed files with 515 additions and 5 deletions
+7
View File
@@ -34,6 +34,10 @@ class AppSettings {
final bool filterContributingArtistsInAlbumArtist;
final String historyViewMode;
final String historyFilterMode;
/// Library view opened when switching to the Library tab:
/// 'last' (keep last used), 'all', 'albums', 'singles', or 'playlists'.
final String defaultLibraryView;
final bool askQualityBeforeDownload;
final bool enableLogging;
final bool useExtensionProviders;
@@ -132,6 +136,7 @@ class AppSettings {
this.filterContributingArtistsInAlbumArtist = false,
this.historyViewMode = 'grid',
this.historyFilterMode = 'all',
this.defaultLibraryView = 'last',
this.askQualityBeforeDownload = true,
this.enableLogging = false,
this.useExtensionProviders = true,
@@ -202,6 +207,7 @@ class AppSettings {
bool? filterContributingArtistsInAlbumArtist,
String? historyViewMode,
String? historyFilterMode,
String? defaultLibraryView,
bool? askQualityBeforeDownload,
bool? enableLogging,
bool? useExtensionProviders,
@@ -279,6 +285,7 @@ class AppSettings {
this.filterContributingArtistsInAlbumArtist,
historyViewMode: historyViewMode ?? this.historyViewMode,
historyFilterMode: historyFilterMode ?? this.historyFilterMode,
defaultLibraryView: defaultLibraryView ?? this.defaultLibraryView,
askQualityBeforeDownload:
askQualityBeforeDownload ?? this.askQualityBeforeDownload,
enableLogging: enableLogging ?? this.enableLogging,
+2
View File
@@ -33,6 +33,7 @@ AppSettings _$AppSettingsFromJson(Map<String, dynamic> json) => AppSettings(
json['filterContributingArtistsInAlbumArtist'] as bool? ?? false,
historyViewMode: json['historyViewMode'] as String? ?? 'grid',
historyFilterMode: json['historyFilterMode'] as String? ?? 'all',
defaultLibraryView: json['defaultLibraryView'] as String? ?? 'last',
askQualityBeforeDownload: json['askQualityBeforeDownload'] as bool? ?? true,
enableLogging: json['enableLogging'] as bool? ?? false,
useExtensionProviders: json['useExtensionProviders'] as bool? ?? true,
@@ -122,6 +123,7 @@ Map<String, dynamic> _$AppSettingsToJson(
instance.filterContributingArtistsInAlbumArtist,
'historyViewMode': instance.historyViewMode,
'historyFilterMode': instance.historyFilterMode,
'defaultLibraryView': instance.defaultLibraryView,
'askQualityBeforeDownload': instance.askQualityBeforeDownload,
'enableLogging': instance.enableLogging,
'useExtensionProviders': instance.useExtensionProviders,