From bd4d792179f28ab1d4ab66f783a78d08a48e0a0d Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 11 Jun 2020 11:57:56 +0900 Subject: [PATCH] album unique name is now unique for its storage volume only --- lib/model/collection_lens.dart | 7 ++++++- lib/model/collection_source.dart | 3 ++- lib/widgets/album/grid/header_generic.dart | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/model/collection_lens.dart b/lib/model/collection_lens.dart index 563eeba54..7fe7dfe79 100644 --- a/lib/model/collection_lens.dart +++ b/lib/model/collection_lens.dart @@ -6,6 +6,7 @@ import 'package:aves/model/filters/album.dart'; import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/settings.dart'; +import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/change_notifier.dart'; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; @@ -170,7 +171,11 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel final compare = (a, b) { final ua = source.getUniqueAlbumName(a); final ub = source.getUniqueAlbumName(b); - return compareAsciiUpperCase(ua, ub); + final c = compareAsciiUpperCase(ua, ub); + if (c != 0) return c; + final va = androidFileUtils.getStorageVolume(a)?.path ?? ''; + final vb = androidFileUtils.getStorageVolume(b)?.path ?? ''; + return compareAsciiUpperCase(va, vb); }; sections = SplayTreeMap.of(byAlbum, compare); break; diff --git a/lib/model/collection_source.dart b/lib/model/collection_source.dart index 751bcc51a..2b686e4f0 100644 --- a/lib/model/collection_source.dart +++ b/lib/model/collection_source.dart @@ -188,7 +188,8 @@ class CollectionSource { bool _isEmptyAlbum(String album) => !_rawEntries.any((entry) => entry.directory == album); String getUniqueAlbumName(String album) { - final otherAlbums = _folderPaths.where((item) => item != album); + final volumeRoot = androidFileUtils.getStorageVolume(album)?.path ?? ''; + final otherAlbums = _folderPaths.where((item) => item != album && item.startsWith(volumeRoot)); final parts = album.split(separator); var partCount = 0; String testName; diff --git a/lib/widgets/album/grid/header_generic.dart b/lib/widgets/album/grid/header_generic.dart index 9d9086f58..bca038fd8 100644 --- a/lib/widgets/album/grid/header_generic.dart +++ b/lib/widgets/album/grid/header_generic.dart @@ -119,7 +119,7 @@ class TitleSectionHeader extends StatelessWidget { static const leadingDimension = 32.0; static const leadingPadding = EdgeInsets.only(right: 8, bottom: 4); - static const trailingPadding = EdgeInsets.only(left: 8, bottom: 4); + static const trailingPadding = EdgeInsets.only(left: 8, bottom: 2); static const padding = EdgeInsets.all(16); static const widgetSpanAlignment = PlaceholderAlignment.middle;