albums: allow sorting when selecting album

This commit is contained in:
Thibault Deckers 2020-10-16 17:26:47 +09:00
parent fa738b6a55
commit 2236be7d60

View file

@ -1,8 +1,10 @@
import 'dart:async';
import 'package:aves/model/filters/album.dart';
import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart';
import 'package:aves/model/source/enums.dart';
import 'package:aves/services/android_app_service.dart';
import 'package:aves/services/image_file_service.dart';
import 'package:aves/widgets/collection/collection_actions.dart';
@ -14,11 +16,14 @@ 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/common/chip_actions.dart';
import 'package:aves/widgets/filter_grids/common/chip_set_action_delegate.dart';
import 'package:aves/widgets/filter_grids/common/filter_grid_page.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin {
final CollectionLens collection;
@ -58,10 +63,14 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin {
Future<void> _moveSelection(BuildContext context, {@required bool copy}) async {
final source = collection.source;
final chipSetActionDelegate = AlbumChipSetActionDelegate(source: source);
final destinationAlbum = await Navigator.push(
context,
MaterialPageRoute<String>(
builder: (context) {
return Selector<Settings, ChipSortFactor>(
selector: (context, s) => s.albumSortFactor,
builder: (context, sortFactor, child) {
return FilterGridPage(
source: source,
appBar: SliverAppBar(
@ -81,6 +90,10 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin {
},
tooltip: 'Create album',
),
IconButton(
icon: Icon(AIcons.sort),
onPressed: () => chipSetActionDelegate.onActionSelected(context, ChipSetAction.sort),
),
],
floating: true,
),
@ -93,6 +106,8 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin {
onTap: (filter) => Navigator.pop<String>(context, (filter as AlbumFilter)?.album),
);
},
);
},
),
);
if (destinationAlbum == null || destinationAlbum.isEmpty) return;