diff --git a/lib/model/collection_lens.dart b/lib/model/collection_lens.dart index e52b78800..475b41169 100644 --- a/lib/model/collection_lens.dart +++ b/lib/model/collection_lens.dart @@ -4,6 +4,7 @@ import 'dart:collection'; import 'package:aves/model/collection_filters.dart'; import 'package:aves/model/collection_source.dart'; import 'package:aves/model/image_entry.dart'; +import 'package:aves/model/settings.dart'; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; @@ -21,8 +22,8 @@ class CollectionLens with ChangeNotifier { CollectionLens({ @required this.source, List filters, - GroupFactor groupFactor, - SortFactor sortFactor, + @required GroupFactor groupFactor, + @required SortFactor sortFactor, }) : this.filters = [if (filters != null) ...filters.where((f) => f != null)].toSet(), this.groupFactor = groupFactor ?? GroupFactor.month, this.sortFactor = sortFactor ?? SortFactor.date { @@ -44,6 +45,8 @@ class CollectionLens with ChangeNotifier { factory CollectionLens.empty() { return CollectionLens( source: CollectionSource(), + groupFactor: settings.collectionGroupFactor, + sortFactor: settings.collectionSortFactor, ); } diff --git a/lib/widgets/album/all_collection_app_bar.dart b/lib/widgets/album/collection_app_bar.dart similarity index 97% rename from lib/widgets/album/all_collection_app_bar.dart rename to lib/widgets/album/collection_app_bar.dart index 13d24dedc..fe77d79ef 100644 --- a/lib/widgets/album/all_collection_app_bar.dart +++ b/lib/widgets/album/collection_app_bar.dart @@ -1,5 +1,6 @@ import 'package:aves/model/collection_lens.dart'; import 'package:aves/model/settings.dart'; +import 'package:aves/widgets/album/filter_bar.dart'; import 'package:aves/widgets/album/search_delegate.dart'; import 'package:aves/widgets/common/menu_row.dart'; import 'package:aves/widgets/stats.dart'; @@ -11,8 +12,9 @@ import 'package:provider/provider.dart'; class AllCollectionAppBar extends SliverAppBar { AllCollectionAppBar() : super( - title: const Text('All'), + title: const Text('Aves'), actions: _buildActions(), + bottom: FilterBar(), floating: true, ); diff --git a/lib/widgets/album/collection_drawer.dart b/lib/widgets/album/collection_drawer.dart index 2d8528ed5..34b39144d 100644 --- a/lib/widgets/album/collection_drawer.dart +++ b/lib/widgets/album/collection_drawer.dart @@ -3,6 +3,7 @@ import 'dart:ui'; import 'package:aves/model/collection_filters.dart'; import 'package:aves/model/collection_lens.dart'; import 'package:aves/model/collection_source.dart'; +import 'package:aves/model/settings.dart'; import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/color_utils.dart'; import 'package:aves/widgets/album/collection_page.dart'; @@ -281,6 +282,8 @@ class _FilteredCollectionNavTile extends StatelessWidget { builder: (context) => CollectionPage(CollectionLens( source: source, filters: [filter], + groupFactor: settings.collectionGroupFactor, + sortFactor: settings.collectionSortFactor, )), ), (route) => false, diff --git a/lib/widgets/album/collection_page.dart b/lib/widgets/album/collection_page.dart index 919a30564..7e21ab21c 100644 --- a/lib/widgets/album/collection_page.dart +++ b/lib/widgets/album/collection_page.dart @@ -1,13 +1,9 @@ import 'package:aves/model/collection_lens.dart'; -import 'package:aves/widgets/album/all_collection_app_bar.dart'; +import 'package:aves/widgets/album/collection_app_bar.dart'; import 'package:aves/widgets/album/collection_drawer.dart'; -import 'package:aves/widgets/album/filter_bar.dart'; import 'package:aves/widgets/album/thumbnail_collection.dart'; import 'package:aves/widgets/common/data_providers/media_query_data_provider.dart'; -import 'package:aves/widgets/common/menu_row.dart'; -import 'package:aves/widgets/stats.dart'; import 'package:flutter/material.dart'; -import 'package:outline_material_icons/outline_material_icons.dart'; import 'package:provider/provider.dart'; class CollectionPage extends StatelessWidget { @@ -22,14 +18,7 @@ class CollectionPage extends StatelessWidget { value: collection, child: Scaffold( body: ThumbnailCollection( - appBar: collection.filters.isEmpty - ? AllCollectionAppBar() - : SliverAppBar( - title: const Text('Aves'), - actions: _buildActions(), - bottom: FilterBar(), - floating: true, - ), + appBar: AllCollectionAppBar(), ), drawer: CollectionDrawer( source: collection.source, @@ -39,43 +28,4 @@ class CollectionPage extends StatelessWidget { ), ); } - - static List _buildActions() { - return [ - Builder( - builder: (context) => Consumer( - builder: (context, collection, child) => PopupMenuButton( - itemBuilder: (context) => [ - PopupMenuItem( - value: CollectionAction.stats, - child: MenuRow(text: 'Stats', icon: OMIcons.pieChart), - ), - ], - onSelected: (action) => _onActionSelected(context, collection, action), - ), - ), - ), - ]; - } - - static void _onActionSelected(BuildContext context, CollectionLens collection, CollectionAction action) { - switch (action) { - case CollectionAction.stats: - _goToStats(context, collection); - break; - default: - break; - } - } - - static Future _goToStats(BuildContext context, CollectionLens collection) { - return Navigator.push( - context, - MaterialPageRoute( - builder: (context) => StatsPage( - collection: collection, - ), - ), - ); - } } diff --git a/lib/widgets/fullscreen/overlay/top.dart b/lib/widgets/fullscreen/overlay/top.dart index 0dc388aab..cf1d038cc 100644 --- a/lib/widgets/fullscreen/overlay/top.dart +++ b/lib/widgets/fullscreen/overlay/top.dart @@ -61,7 +61,7 @@ class FullscreenTopOverlay extends StatelessWidget { scale: scale, child: PopupMenuButton( itemBuilder: (context) => [ - PopupMenuItem( + const PopupMenuItem( value: FullscreenAction.info, child: MenuRow(text: 'Info', icon: OMIcons.info), ), diff --git a/lib/widgets/stats.dart b/lib/widgets/stats.dart index f533926ea..900d7c446 100644 --- a/lib/widgets/stats.dart +++ b/lib/widgets/stats.dart @@ -49,7 +49,7 @@ class StatsPage extends StatelessWidget { backgroundColor: Colors.white24, progressColor: Theme.of(context).accentColor, animation: true, - leading: Icon(OMIcons.place), + leading: const Icon(OMIcons.place), // right padding to match leading, so that inside label is aligned with outside label below padding: const EdgeInsets.symmetric(horizontal: 16) + const EdgeInsets.only(right: 24), center: Text(NumberFormat.percentPattern().format(withGpsPercent)),