diff --git a/lib/widgets/common/action_delegates/selection_action_delegate.dart b/lib/widgets/common/action_delegates/selection_action_delegate.dart index b3bf36570..b58772ebe 100644 --- a/lib/widgets/common/action_delegates/selection_action_delegate.dart +++ b/lib/widgets/common/action_delegates/selection_action_delegate.dart @@ -17,6 +17,7 @@ import 'package:aves/widgets/common/action_delegates/permission_aware.dart'; import 'package:aves/widgets/common/aves_dialog.dart'; import 'package:aves/widgets/common/entry_actions.dart'; import 'package:aves/widgets/common/icons.dart'; +import 'package:aves/widgets/filter_grids/albums_page.dart'; import 'package:aves/widgets/filter_grids/filter_grid_page.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -89,7 +90,7 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin { ], floating: true, ), - filterEntries: source.getAlbumEntries(), + filterEntries: AlbumListPage.getAlbumEntries(source), filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)), emptyBuilder: () => EmptyContent( icon: AIcons.album, diff --git a/lib/widgets/filter_grids/albums_page.dart b/lib/widgets/filter_grids/albums_page.dart index ec6b817b6..0c6cd486e 100644 --- a/lib/widgets/filter_grids/albums_page.dart +++ b/lib/widgets/filter_grids/albums_page.dart @@ -37,7 +37,7 @@ class AlbumListPage extends StatelessWidget { source: source, title: 'Albums', actions: _buildActions(), - filterEntries: _getAlbumEntries(), + filterEntries: getAlbumEntries(source), filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)), emptyBuilder: () => EmptyContent( icon: AIcons.album, @@ -51,47 +51,6 @@ class AlbumListPage extends StatelessWidget { ); } - Map _getAlbumEntries() { - final entriesByDate = source.sortedEntriesForFilterList; - final albumEntries = source.sortedAlbums.map((album) { - return MapEntry( - album, - entriesByDate.firstWhere((entry) => entry.directory == album, orElse: () => null), - ); - }).toList(); - - switch (settings.albumSortFactor) { - case ChipSortFactor.date: - albumEntries.sort((a, b) { - final c = b.value.bestDate?.compareTo(a.value.bestDate) ?? -1; - return c != 0 ? c : compareAsciiUpperCase(a.key, b.key); - }); - return Map.fromEntries(albumEntries); - case ChipSortFactor.name: - default: - final regularAlbums = [], appAlbums = [], specialAlbums = []; - for (var album in source.sortedAlbums) { - switch (androidFileUtils.getAlbumType(album)) { - case AlbumType.regular: - regularAlbums.add(album); - break; - case AlbumType.app: - appAlbums.add(album); - break; - default: - specialAlbums.add(album); - break; - } - } - return Map.fromEntries([...specialAlbums, ...appAlbums, ...regularAlbums].map((album) { - return MapEntry( - album, - entriesByDate.firstWhere((entry) => entry.directory == album, orElse: () => null), - ); - })); - } - } - List _buildActions() { return [ Builder( @@ -134,4 +93,47 @@ class AlbumListPage extends StatelessWidget { break; } } + + // common with album selection page to move/copy entries + + static Map getAlbumEntries(CollectionSource source) { + final entriesByDate = source.sortedEntriesForFilterList; + final albumEntries = source.sortedAlbums.map((album) { + return MapEntry( + album, + entriesByDate.firstWhere((entry) => entry.directory == album, orElse: () => null), + ); + }).toList(); + + switch (settings.albumSortFactor) { + case ChipSortFactor.date: + albumEntries.sort((a, b) { + final c = b.value.bestDate?.compareTo(a.value.bestDate) ?? -1; + return c != 0 ? c : compareAsciiUpperCase(a.key, b.key); + }); + return Map.fromEntries(albumEntries); + case ChipSortFactor.name: + default: + final regularAlbums = [], appAlbums = [], specialAlbums = []; + for (var album in source.sortedAlbums) { + switch (androidFileUtils.getAlbumType(album)) { + case AlbumType.regular: + regularAlbums.add(album); + break; + case AlbumType.app: + appAlbums.add(album); + break; + default: + specialAlbums.add(album); + break; + } + } + return Map.fromEntries([...specialAlbums, ...appAlbums, ...regularAlbums].map((album) { + return MapEntry( + album, + entriesByDate.firstWhere((entry) => entry.directory == album, orElse: () => null), + ); + })); + } + } }