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 {
|
bool get showHeaders {
|
||||||
if (sortFactor == SortFactor.size) return false;
|
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 albumSections = sortFactor == SortFactor.name || (sortFactor == SortFactor.date && groupFactor == GroupFactor.album);
|
||||||
final filterByAlbum = filters.any((f) => f is AlbumFilter);
|
final filterByAlbum = filters.any((f) => f is AlbumFilter);
|
||||||
if (albumSections && filterByAlbum) return false;
|
if (albumSections && filterByAlbum) return false;
|
||||||
|
@ -160,6 +162,11 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel
|
||||||
case GroupFactor.day:
|
case GroupFactor.day:
|
||||||
sections = groupBy<ImageEntry, DateTime>(_filteredEntries, (entry) => entry.dayTaken);
|
sections = groupBy<ImageEntry, DateTime>(_filteredEntries, (entry) => entry.dayTaken);
|
||||||
break;
|
break;
|
||||||
|
case GroupFactor.none:
|
||||||
|
sections = Map.fromEntries([
|
||||||
|
MapEntry(null, _filteredEntries),
|
||||||
|
]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SortFactor.size:
|
case SortFactor.size:
|
||||||
|
@ -209,7 +216,7 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel
|
||||||
|
|
||||||
enum SortFactor { date, size, name }
|
enum SortFactor { date, size, name }
|
||||||
|
|
||||||
enum GroupFactor { album, month, day }
|
enum GroupFactor { none, album, month, day }
|
||||||
|
|
||||||
enum Activity { browse, select }
|
enum Activity { browse, select }
|
||||||
|
|
||||||
|
|
|
@ -271,6 +271,10 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
|
||||||
value: CollectionAction.groupByDay,
|
value: CollectionAction.groupByDay,
|
||||||
child: MenuRow(text: 'Group by day', checked: collection.groupFactor == GroupFactor.day),
|
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(),
|
PopupMenuDivider(),
|
||||||
]
|
]
|
||||||
: [];
|
: [];
|
||||||
|
@ -329,6 +333,10 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
|
||||||
settings.collectionGroupFactor = GroupFactor.day;
|
settings.collectionGroupFactor = GroupFactor.day;
|
||||||
collection.group(GroupFactor.day);
|
collection.group(GroupFactor.day);
|
||||||
break;
|
break;
|
||||||
|
case CollectionAction.groupByNone:
|
||||||
|
settings.collectionGroupFactor = GroupFactor.none;
|
||||||
|
collection.group(GroupFactor.none);
|
||||||
|
break;
|
||||||
case CollectionAction.sortByDate:
|
case CollectionAction.sortByDate:
|
||||||
settings.collectionSortFactor = SortFactor.date;
|
settings.collectionSortFactor = SortFactor.date;
|
||||||
collection.sort(SortFactor.date);
|
collection.sort(SortFactor.date);
|
||||||
|
@ -375,6 +383,7 @@ enum CollectionAction {
|
||||||
groupByAlbum,
|
groupByAlbum,
|
||||||
groupByMonth,
|
groupByMonth,
|
||||||
groupByDay,
|
groupByDay,
|
||||||
|
groupByNone,
|
||||||
sortByDate,
|
sortByDate,
|
||||||
sortBySize,
|
sortBySize,
|
||||||
sortByName,
|
sortByName,
|
||||||
|
|
|
@ -29,18 +29,18 @@ class SectionHeader extends StatelessWidget {
|
||||||
Widget header;
|
Widget header;
|
||||||
switch (collection.sortFactor) {
|
switch (collection.sortFactor) {
|
||||||
case SortFactor.date:
|
case SortFactor.date:
|
||||||
if (collection.sortFactor == SortFactor.date) {
|
switch (collection.groupFactor) {
|
||||||
switch (collection.groupFactor) {
|
case GroupFactor.album:
|
||||||
case GroupFactor.album:
|
header = _buildAlbumSectionHeader();
|
||||||
header = _buildAlbumSectionHeader();
|
break;
|
||||||
break;
|
case GroupFactor.month:
|
||||||
case GroupFactor.month:
|
header = MonthSectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime);
|
||||||
header = MonthSectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime);
|
break;
|
||||||
break;
|
case GroupFactor.day:
|
||||||
case GroupFactor.day:
|
header = DaySectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime);
|
||||||
header = DaySectionHeader(key: ValueKey(sectionKey), date: sectionKey as DateTime);
|
break;
|
||||||
break;
|
case GroupFactor.none:
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SortFactor.size:
|
case SortFactor.size:
|
||||||
|
|
Loading…
Reference in a new issue