collection: added option to not group
This commit is contained in:
parent
936a004923
commit
5f3d4e5946
3 changed files with 29 additions and 13 deletions
|
@ -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 }
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue