album unique name is now unique for its storage volume only

This commit is contained in:
Thibault Deckers 2020-06-11 11:57:56 +09:00
parent 3fe1d955d6
commit bd4d792179
3 changed files with 9 additions and 3 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;