From 5f3d4e5946221321e3bb225863ef55dbb6787e58 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 1 Aug 2020 21:34:06 +0900 Subject: [PATCH] collection: added option to not group --- lib/model/source/collection_lens.dart | 9 +++++++- lib/widgets/album/app_bar.dart | 9 ++++++++ lib/widgets/album/grid/header_generic.dart | 24 +++++++++++----------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/lib/model/source/collection_lens.dart b/lib/model/source/collection_lens.dart index 7ba050181..0b1b1e2cf 100644 --- a/lib/model/source/collection_lens.dart +++ b/lib/model/source/collection_lens.dart @@ -85,6 +85,8 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel bool get showHeaders { if (sortFactor == SortFactor.size) return false; + if (sortFactor == SortFactor.date && groupFactor == GroupFactor.none) return false; + final albumSections = sortFactor == SortFactor.name || (sortFactor == SortFactor.date && groupFactor == GroupFactor.album); final filterByAlbum = filters.any((f) => f is AlbumFilter); if (albumSections && filterByAlbum) return false; @@ -160,6 +162,11 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel case GroupFactor.day: sections = groupBy(_filteredEntries, (entry) => entry.dayTaken); break; + case GroupFactor.none: + sections = Map.fromEntries([ + MapEntry(null, _filteredEntries), + ]); + break; } break; case SortFactor.size: @@ -209,7 +216,7 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel enum SortFactor { date, size, name } -enum GroupFactor { album, month, day } +enum GroupFactor { none, album, month, day } enum Activity { browse, select } diff --git a/lib/widgets/album/app_bar.dart b/lib/widgets/album/app_bar.dart index a2086dee7..0ce2ccf64 100644 --- a/lib/widgets/album/app_bar.dart +++ b/lib/widgets/album/app_bar.dart @@ -271,6 +271,10 @@ class _CollectionAppBarState extends State with SingleTickerPr value: CollectionAction.groupByDay, child: MenuRow(text: 'Group by day', checked: collection.groupFactor == GroupFactor.day), ), + PopupMenuItem( + value: CollectionAction.groupByNone, + child: MenuRow(text: 'Do not group', checked: collection.groupFactor == GroupFactor.none), + ), PopupMenuDivider(), ] : []; @@ -329,6 +333,10 @@ class _CollectionAppBarState extends State with SingleTickerPr settings.collectionGroupFactor = GroupFactor.day; collection.group(GroupFactor.day); break; + case CollectionAction.groupByNone: + settings.collectionGroupFactor = GroupFactor.none; + collection.group(GroupFactor.none); + break; case CollectionAction.sortByDate: settings.collectionSortFactor = SortFactor.date; collection.sort(SortFactor.date); @@ -375,6 +383,7 @@ enum CollectionAction { groupByAlbum, groupByMonth, groupByDay, + groupByNone, sortByDate, sortBySize, sortByName, diff --git a/lib/widgets/album/grid/header_generic.dart b/lib/widgets/album/grid/header_generic.dart index e10d7b1ea..59bbc8163 100644 --- a/lib/widgets/album/grid/header_generic.dart +++ b/lib/widgets/album/grid/header_generic.dart @@ -29,18 +29,18 @@ class SectionHeader extends StatelessWidget { Widget header; switch (collection.sortFactor) { case SortFactor.date: - if (collection.sortFactor == SortFactor.date) { - switch (collection.groupFactor) { - case GroupFactor.album: - header = _buildAlbumSectionHeader(); - break; - case GroupFactor.month: - header = MonthSectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime); - break; - case GroupFactor.day: - header = DaySectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime); - break; - } + switch (collection.groupFactor) { + case GroupFactor.album: + header = _buildAlbumSectionHeader(); + break; + case GroupFactor.month: + header = MonthSectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime); + break; + case GroupFactor.day: + header = DaySectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime); + break; + case GroupFactor.none: + break; } break; case SortFactor.size: