From 6c145d5bb58afbb64ec9c5cbbbda56cfa749df2c Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Tue, 8 Feb 2022 12:06:26 +0900 Subject: [PATCH] #178 pick mode: allow nav from filter pages --- lib/app_mode.dart | 8 ++++---- lib/widgets/collection/app_bar.dart | 4 ++-- lib/widgets/collection/grid/tile.dart | 5 +++-- lib/widgets/dialogs/item_pick_dialog.dart | 2 +- lib/widgets/filter_grids/album_pick.dart | 2 +- lib/widgets/filter_grids/common/filter_tile.dart | 5 +++-- lib/widgets/home_page.dart | 4 ++-- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/app_mode.dart b/lib/app_mode.dart index b93ec33e6..34f38a48b 100644 --- a/lib/app_mode.dart +++ b/lib/app_mode.dart @@ -1,11 +1,11 @@ -enum AppMode { main, pickExternal, pickInternal, view } +enum AppMode { main, pickMediaExternal, pickMediaInternal, pickFilterInternal, view } extension ExtraAppMode on AppMode { - bool get canSearch => this == AppMode.main || this == AppMode.pickExternal; + bool get canSearch => this == AppMode.main || this == AppMode.pickMediaExternal; bool get canSelect => this == AppMode.main; - bool get hasDrawer => this == AppMode.main || this == AppMode.pickExternal; + bool get hasDrawer => this == AppMode.main || this == AppMode.pickMediaExternal; - bool get isPicking => this == AppMode.pickExternal || this == AppMode.pickInternal; + bool get isPickingMedia => this == AppMode.pickMediaExternal || this == AppMode.pickMediaInternal; } diff --git a/lib/widgets/collection/app_bar.dart b/lib/widgets/collection/app_bar.dart index 7ba7144ff..04c8be3a9 100644 --- a/lib/widgets/collection/app_bar.dart +++ b/lib/widgets/collection/app_bar.dart @@ -110,7 +110,7 @@ class _CollectionAppBarState extends State with SingleTickerPr return AnimatedBuilder( animation: collection.filterChangeNotifier, builder: (context, child) { - final removableFilters = appMode != AppMode.pickInternal; + final removableFilters = appMode != AppMode.pickMediaInternal; return Selector( selector: (context, query) => query.enabled, builder: (context, queryEnabled, child) { @@ -185,7 +185,7 @@ class _CollectionAppBarState extends State with SingleTickerPr ); } else { final appMode = context.watch>().value; - Widget title = Text(appMode.isPicking ? l10n.collectionPickPageTitle : l10n.collectionPageTitle); + Widget title = Text(appMode.isPickingMedia ? l10n.collectionPickPageTitle : l10n.collectionPageTitle); if (appMode == AppMode.main) { title = SourceStateAwareAppBarTitle( title: title, diff --git a/lib/widgets/collection/grid/tile.dart b/lib/widgets/collection/grid/tile.dart index 0caf3dfed..cb0f82d21 100644 --- a/lib/widgets/collection/grid/tile.dart +++ b/lib/widgets/collection/grid/tile.dart @@ -43,12 +43,13 @@ class InteractiveTile extends StatelessWidget { _goToViewer(context); } break; - case AppMode.pickExternal: + case AppMode.pickMediaExternal: ViewerService.pick(entry.uri); break; - case AppMode.pickInternal: + case AppMode.pickMediaInternal: Navigator.pop(context, entry); break; + case AppMode.pickFilterInternal: case AppMode.view: break; } diff --git a/lib/widgets/dialogs/item_pick_dialog.dart b/lib/widgets/dialogs/item_pick_dialog.dart index c72252e22..7623c05e1 100644 --- a/lib/widgets/dialogs/item_pick_dialog.dart +++ b/lib/widgets/dialogs/item_pick_dialog.dart @@ -39,7 +39,7 @@ class _ItemPickDialogState extends State { Widget build(BuildContext context) { final liveFilter = collection.filters.firstWhereOrNull((v) => v is QueryFilter && v.live) as QueryFilter?; return ListenableProvider>.value( - value: ValueNotifier(AppMode.pickInternal), + value: ValueNotifier(AppMode.pickMediaInternal), child: MediaQueryDataProvider( child: Scaffold( body: SelectionProvider( diff --git a/lib/widgets/filter_grids/album_pick.dart b/lib/widgets/filter_grids/album_pick.dart index 63755740b..06dbc1aa6 100644 --- a/lib/widgets/filter_grids/album_pick.dart +++ b/lib/widgets/filter_grids/album_pick.dart @@ -65,7 +65,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> { @override Widget build(BuildContext context) { return ListenableProvider>.value( - value: ValueNotifier(AppMode.pickInternal), + value: ValueNotifier(AppMode.pickFilterInternal), child: Selector>( selector: (context, s) => Tuple2(s.albumGroupFactor, s.albumSortFactor), builder: (context, s, child) { diff --git a/lib/widgets/filter_grids/common/filter_tile.dart b/lib/widgets/filter_grids/common/filter_tile.dart index a3e01625e..f175a3101 100644 --- a/lib/widgets/filter_grids/common/filter_tile.dart +++ b/lib/widgets/filter_grids/common/filter_tile.dart @@ -51,6 +51,7 @@ class _InteractiveFilterTileState extends State>().value; switch (appMode) { case AppMode.main: + case AppMode.pickMediaExternal: final selection = context.read>>(); if (selection.isSelecting) { selection.toggleSelection(gridItem); @@ -58,10 +59,10 @@ class _InteractiveFilterTileState extends State(context, filter); break; - case AppMode.pickExternal: + case AppMode.pickMediaInternal: case AppMode.view: break; } diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index aeb9d078f..980b4531a 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -94,7 +94,7 @@ class _HomePageState extends State { } break; case 'pick': - appMode = AppMode.pickExternal; + appMode = AppMode.pickMediaExternal; // TODO TLAD apply pick mimetype(s) // some apps define multiple types, separated by a space (maybe other signs too, like `,` `;`?) String? pickMimeTypes = intentData['mimeType']; @@ -199,7 +199,7 @@ class _HomePageState extends State { String routeName; Set? filters; - if (appMode == AppMode.pickExternal) { + if (appMode == AppMode.pickMediaExternal) { routeName = CollectionPage.routeName; } else { routeName = _shortcutRouteName ?? settings.homePage.routeName;