collection: custom quick actions for browsing

This commit is contained in:
Thibault Deckers 2021-11-01 17:17:06 +09:00
parent 08020260a4
commit 2b90d7cca8
5 changed files with 24 additions and 18 deletions

View file

@ -17,8 +17,6 @@ class CollectionSearchButton extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return IconButton( return IconButton(
// key is expected by test driver
key: const Key('search-button'),
icon: const Icon(AIcons.search), icon: const Icon(AIcons.search),
onPressed: () => _goToSearch(context), onPressed: () => _goToSearch(context),
tooltip: MaterialLocalizations.of(context).searchFieldLabel, tooltip: MaterialLocalizations.of(context).searchFieldLabel,

View file

@ -4,19 +4,19 @@ import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/quick_actions/editor_page.dart'; import 'package:aves/widgets/settings/common/quick_actions/editor_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class SelectionActionsTile extends StatelessWidget { class BrowsingActionsTile extends StatelessWidget {
const SelectionActionsTile({Key? key}) : super(key: key); const BrowsingActionsTile({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListTile( return ListTile(
title: Text(context.l10n.settingsCollectionSelectionQuickActionsTile), title: Text(context.l10n.settingsCollectionBrowsingQuickActionsTile),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
settings: const RouteSettings(name: SelectionActionEditorPage.routeName), settings: const RouteSettings(name: BrowsingActionEditorPage.routeName),
builder: (context) => const SelectionActionEditorPage(), builder: (context) => const BrowsingActionEditorPage(),
), ),
); );
}, },
@ -24,21 +24,21 @@ class SelectionActionsTile extends StatelessWidget {
} }
} }
class SelectionActionEditorPage extends StatelessWidget { class BrowsingActionEditorPage extends StatelessWidget {
static const routeName = '/settings/collection_selection_actions'; static const routeName = '/settings/collection_browsing_actions';
const SelectionActionEditorPage({Key? key}) : super(key: key); const BrowsingActionEditorPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return QuickActionEditorPage<EntrySetAction>( return QuickActionEditorPage<EntrySetAction>(
title: context.l10n.settingsCollectionSelectionQuickActionEditorTitle, title: context.l10n.settingsCollectionBrowsingQuickActionEditorTitle,
bannerText: context.l10n.settingsCollectionSelectionQuickActionEditorBanner, bannerText: context.l10n.settingsCollectionBrowsingQuickActionEditorBanner,
allAvailableActions: EntrySetActions.selection, allAvailableActions: EntrySetActions.browsing,
actionIcon: (action) => action.getIcon(), actionIcon: (action) => action.getIcon(),
actionText: (context, action) => action.getText(context), actionText: (context, action) => action.getText(context),
load: () => settings.collectionSelectionQuickActions.toList(), load: () => settings.collectionBrowsingQuickActions.toList(),
save: (actions) => settings.collectionSelectionQuickActions = actions, save: (actions) => settings.collectionBrowsingQuickActions = actions,
); );
} }
} }

View file

@ -6,6 +6,7 @@ import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_expansion_tile.dart'; import 'package:aves/widgets/common/identity/aves_expansion_tile.dart';
import 'package:aves/widgets/common/identity/aves_icons.dart'; import 'package:aves/widgets/common/identity/aves_icons.dart';
import 'package:aves/widgets/settings/common/tile_leading.dart'; import 'package:aves/widgets/settings/common/tile_leading.dart';
import 'package:aves/widgets/settings/thumbnails/browsing_actions_editor.dart';
import 'package:aves/widgets/settings/thumbnails/selection_actions_editor.dart'; import 'package:aves/widgets/settings/thumbnails/selection_actions_editor.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -37,6 +38,7 @@ class ThumbnailsSection extends StatelessWidget {
expandedNotifier: expandedNotifier, expandedNotifier: expandedNotifier,
showHighlight: false, showHighlight: false,
children: [ children: [
const BrowsingActionsTile(),
const SelectionActionsTile(), const SelectionActionsTile(),
SwitchListTile( SwitchListTile(
value: currentShowThumbnailLocation, value: currentShowThumbnailLocation,

View file

@ -169,7 +169,7 @@ void selectFirstAlbum() {
void searchAlbum() { void searchAlbum() {
test('[collection] search album', () async { test('[collection] search album', () async {
await driver.tap(find.byValueKey('search-button')); await driver.tap(find.byValueKey('menu-search'));
await driver.waitUntilNoTransientCallbacks(); await driver.waitUntilNoTransientCallbacks();
const albumPath = targetPicturesDirEmulated; const albumPath = targetPicturesDirEmulated;

View file

@ -5,7 +5,10 @@
"editEntryDateDialogExtractFromTitle", "editEntryDateDialogExtractFromTitle",
"collectionActionEdit", "collectionActionEdit",
"collectionEditFailureFeedback", "collectionEditFailureFeedback",
"collectionEditSuccessFeedback" "collectionEditSuccessFeedback",
"settingsCollectionBrowsingQuickActionsTile",
"settingsCollectionBrowsingQuickActionEditorTitle",
"settingsCollectionBrowsingQuickActionEditorBanner"
], ],
"ru": [ "ru": [
@ -15,6 +18,9 @@
"aboutCreditsTranslators", "aboutCreditsTranslators",
"collectionActionEdit", "collectionActionEdit",
"collectionEditFailureFeedback", "collectionEditFailureFeedback",
"collectionEditSuccessFeedback" "collectionEditSuccessFeedback",
"settingsCollectionBrowsingQuickActionsTile",
"settingsCollectionBrowsingQuickActionEditorTitle",
"settingsCollectionBrowsingQuickActionEditorBanner"
] ]
} }