drawer: hide favourites tile if filter is hidden
This commit is contained in:
parent
2a4722736b
commit
a36bf739c7
6 changed files with 10 additions and 7 deletions
|
@ -8,7 +8,9 @@ import 'package:flutter/widgets.dart';
|
|||
class FavouriteFilter extends CollectionFilter {
|
||||
static const type = 'favourite';
|
||||
|
||||
const FavouriteFilter();
|
||||
static const instance = FavouriteFilter._private();
|
||||
|
||||
const FavouriteFilter._private();
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toMap() => {
|
||||
|
|
|
@ -31,7 +31,7 @@ abstract class CollectionFilter implements Comparable<CollectionFilter> {
|
|||
case AlbumFilter.type:
|
||||
return AlbumFilter.fromMap(jsonMap);
|
||||
case FavouriteFilter.type:
|
||||
return FavouriteFilter();
|
||||
return FavouriteFilter.instance;
|
||||
case LocationFilter.type:
|
||||
return LocationFilter.fromMap(jsonMap);
|
||||
case TypeFilter.type:
|
||||
|
|
|
@ -47,11 +47,12 @@ class _AppDrawerState extends State<AppDrawer> {
|
|||
Widget build(BuildContext context) {
|
||||
final hiddenFilters = settings.hiddenFilters;
|
||||
final showVideos = !hiddenFilters.contains(MimeFilter.video);
|
||||
final showFavourites = !hiddenFilters.contains(FavouriteFilter.instance);
|
||||
final drawerItems = <Widget>[
|
||||
_buildHeader(context),
|
||||
allCollectionTile,
|
||||
if (showVideos) videoTile,
|
||||
favouriteTile,
|
||||
if (showFavourites) favouriteTile,
|
||||
_buildSpecialAlbumSection(),
|
||||
Divider(),
|
||||
albumListTile,
|
||||
|
@ -161,7 +162,7 @@ class _AppDrawerState extends State<AppDrawer> {
|
|||
Widget get favouriteTile => CollectionNavTile(
|
||||
leading: Icon(AIcons.favourite),
|
||||
title: context.l10n.drawerCollectionFavourites,
|
||||
filter: FavouriteFilter(),
|
||||
filter: FavouriteFilter.instance,
|
||||
);
|
||||
|
||||
Widget get albumListTile => NavTile(
|
||||
|
|
|
@ -30,7 +30,7 @@ class CollectionSearchDelegate {
|
|||
|
||||
static const searchHistoryCount = 10;
|
||||
static final typeFilters = [
|
||||
FavouriteFilter(),
|
||||
FavouriteFilter.instance,
|
||||
MimeFilter.image,
|
||||
MimeFilter.video,
|
||||
TypeFilter.animated,
|
||||
|
|
|
@ -90,7 +90,7 @@ class BasicSection extends StatelessWidget {
|
|||
builder: (context, child) {
|
||||
final effectiveFilters = [
|
||||
...filters,
|
||||
if (entry.isFavourite) FavouriteFilter(),
|
||||
if (entry.isFavourite) FavouriteFilter.instance,
|
||||
]..sort();
|
||||
if (effectiveFilters.isEmpty) return SizedBox.shrink();
|
||||
return Padding(
|
||||
|
|
|
@ -15,7 +15,7 @@ void main() {
|
|||
final album = AlbumFilter('path/to/album', 'album');
|
||||
expect(album, jsonRoundTrip(album));
|
||||
|
||||
final fav = FavouriteFilter();
|
||||
final fav = FavouriteFilter.instance;
|
||||
expect(fav, jsonRoundTrip(fav));
|
||||
|
||||
final location = LocationFilter(LocationLevel.country, 'France${LocationFilter.locationSeparator}FR');
|
||||
|
|
Loading…
Reference in a new issue