apply album list page settings to move/copy album selection page
This commit is contained in:
parent
daedad57fa
commit
80644f036b
2 changed files with 46 additions and 43 deletions
|
@ -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/aves_dialog.dart';
|
||||||
import 'package:aves/widgets/common/entry_actions.dart';
|
import 'package:aves/widgets/common/entry_actions.dart';
|
||||||
import 'package:aves/widgets/common/icons.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:aves/widgets/filter_grids/filter_grid_page.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -89,7 +90,7 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin {
|
||||||
],
|
],
|
||||||
floating: true,
|
floating: true,
|
||||||
),
|
),
|
||||||
filterEntries: source.getAlbumEntries(),
|
filterEntries: AlbumListPage.getAlbumEntries(source),
|
||||||
filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)),
|
filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)),
|
||||||
emptyBuilder: () => EmptyContent(
|
emptyBuilder: () => EmptyContent(
|
||||||
icon: AIcons.album,
|
icon: AIcons.album,
|
||||||
|
|
|
@ -37,7 +37,7 @@ class AlbumListPage extends StatelessWidget {
|
||||||
source: source,
|
source: source,
|
||||||
title: 'Albums',
|
title: 'Albums',
|
||||||
actions: _buildActions(),
|
actions: _buildActions(),
|
||||||
filterEntries: _getAlbumEntries(),
|
filterEntries: getAlbumEntries(source),
|
||||||
filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)),
|
filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)),
|
||||||
emptyBuilder: () => EmptyContent(
|
emptyBuilder: () => EmptyContent(
|
||||||
icon: AIcons.album,
|
icon: AIcons.album,
|
||||||
|
@ -51,47 +51,6 @@ class AlbumListPage extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, ImageEntry> _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 = <String>[], appAlbums = <String>[], specialAlbums = <String>[];
|
|
||||||
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<Widget> _buildActions() {
|
List<Widget> _buildActions() {
|
||||||
return [
|
return [
|
||||||
Builder(
|
Builder(
|
||||||
|
@ -134,4 +93,47 @@ class AlbumListPage extends StatelessWidget {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// common with album selection page to move/copy entries
|
||||||
|
|
||||||
|
static Map<String, ImageEntry> 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 = <String>[], appAlbums = <String>[], specialAlbums = <String>[];
|
||||||
|
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),
|
||||||
|
);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue