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