collection: added option to not group

This commit is contained in:
Thibault Deckers 2020-08-01 21:34:06 +09:00
parent 936a004923
commit 5f3d4e5946
3 changed files with 29 additions and 13 deletions

View file

@ -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<ImageEntry, DateTime>(_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 }

View file

@ -271,6 +271,10 @@ class _CollectionAppBarState extends State<CollectionAppBar> 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<CollectionAppBar> 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,

View file

@ -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: