diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0dea5d4bc..c1d9a060a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
+### Added
+
+- Widget: option to open collection on tap
+
## [v1.7.1] - 2022-10-09
### Added
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index 24e1a4a56..63c3eb9d1 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -216,6 +216,7 @@
"wallpaperTargetHomeLock": "Home and lock screens",
"widgetOpenPageHome": "Open home",
+ "widgetOpenPageCollection": "Open collection",
"widgetOpenPageViewer": "Open viewer",
"albumTierNew": "New",
diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb
index 391229e97..33e4ec23b 100644
--- a/lib/l10n/app_fr.arb
+++ b/lib/l10n/app_fr.arb
@@ -176,6 +176,7 @@
"wallpaperTargetHomeLock": "Écrans accueil et verrouillage",
"widgetOpenPageHome": "Ouvrir la page d’accueil",
+ "widgetOpenPageCollection": "Ouvrir la collection",
"widgetOpenPageViewer": "Ouvrir la visionneuse",
"albumTierNew": "Nouveaux",
diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb
index b311241e8..c67b589eb 100644
--- a/lib/l10n/app_ko.arb
+++ b/lib/l10n/app_ko.arb
@@ -176,6 +176,7 @@
"wallpaperTargetHomeLock": "홈 및 잠금화면",
"widgetOpenPageHome": "홈 열기",
+ "widgetOpenPageCollection": "미디어 열기",
"widgetOpenPageViewer": "뷰어 열기",
"albumTierNew": "신규",
diff --git a/lib/model/settings/enums/enums.dart b/lib/model/settings/enums/enums.dart
index 79f4cc1e7..74868f0bf 100644
--- a/lib/model/settings/enums/enums.dart
+++ b/lib/model/settings/enums/enums.dart
@@ -32,6 +32,6 @@ enum VideoAutoPlayMode { disabled, playMuted, playWithSound }
enum ViewerTransition { slide, parallax, fade, zoomIn, none }
-enum WidgetOpenPage { home, viewer }
+enum WidgetOpenPage { home, collection, viewer }
enum WidgetShape { rrect, circle, heart }
diff --git a/lib/model/settings/enums/widget_open_action.dart b/lib/model/settings/enums/widget_open_action.dart
index 804b99b46..333be5fca 100644
--- a/lib/model/settings/enums/widget_open_action.dart
+++ b/lib/model/settings/enums/widget_open_action.dart
@@ -7,6 +7,8 @@ extension ExtraWidgetOpenPage on WidgetOpenPage {
switch (this) {
case WidgetOpenPage.home:
return context.l10n.widgetOpenPageHome;
+ case WidgetOpenPage.collection:
+ return context.l10n.widgetOpenPageCollection;
case WidgetOpenPage.viewer:
return context.l10n.widgetOpenPageViewer;
}
diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart
index 0eee4039a..3f84fb4ca 100644
--- a/lib/widgets/home_page.dart
+++ b/lib/widgets/home_page.dart
@@ -106,6 +106,7 @@ class _HomePageState extends State {
var appMode = AppMode.main;
final intentData = widget.intentData ?? await IntentService.getIntentData();
final intentAction = intentData[intentDataKeyAction];
+ _initialFilters = null;
await androidFileUtils.init();
if (!{actionScreenSaver, actionSetWallpaper}.contains(intentAction) && settings.isInstalledAppAccessAllowed) {
@@ -123,8 +124,15 @@ class _HomePageState extends State {
// widget settings may be modified in a different process after channel setup
await settings.reload();
final page = settings.getWidgetOpenPage(widgetId);
- if (page == WidgetOpenPage.viewer) {
- uri = settings.getWidgetUri(widgetId);
+ switch (page) {
+ case WidgetOpenPage.home:
+ break;
+ case WidgetOpenPage.collection:
+ _initialFilters = settings.getWidgetCollectionFilters(widgetId);
+ break;
+ case WidgetOpenPage.viewer:
+ uri = settings.getWidgetUri(widgetId);
+ break;
}
unawaited(WidgetService.update(widgetId));
} else {
@@ -181,8 +189,10 @@ class _HomePageState extends State {
_initialRouteName = extraRoute;
}
}
- final extraFilters = intentData[intentDataKeyFilters];
- _initialFilters = extraFilters != null ? (extraFilters as List).cast().map(CollectionFilter.fromJson).whereNotNull().toSet() : null;
+ if (_initialFilters == null) {
+ final extraFilters = intentData[intentDataKeyFilters];
+ _initialFilters = extraFilters != null ? (extraFilters as List).cast().map(CollectionFilter.fromJson).whereNotNull().toSet() : null;
+ }
}
context.read>().value = appMode;
unawaited(reportService.setCustomKey('app_mode', appMode.toString()));
diff --git a/untranslated.json b/untranslated.json
index e034aad2b..e5aded61f 100644
--- a/untranslated.json
+++ b/untranslated.json
@@ -1,4 +1,12 @@
{
+ "de": [
+ "widgetOpenPageCollection"
+ ],
+
+ "el": [
+ "widgetOpenPageCollection"
+ ],
+
"es": [
"chipActionFilterOut",
"chipActionFilterIn",
@@ -8,6 +16,7 @@
"filterRecentlyAddedLabel",
"viewerTransitionNone",
"widgetOpenPageHome",
+ "widgetOpenPageCollection",
"widgetOpenPageViewer",
"viewDialogReverseSortOrder",
"tileLayoutMosaic",
@@ -36,6 +45,7 @@
"chipActionFilterIn",
"viewerTransitionNone",
"widgetOpenPageHome",
+ "widgetOpenPageCollection",
"widgetOpenPageViewer",
"tileLayoutMosaic",
"albumGroupType",
@@ -47,6 +57,10 @@
"wallpaperUseScrollEffect"
],
+ "it": [
+ "widgetOpenPageCollection"
+ ],
+
"ja": [
"chipActionFilterOut",
"chipActionFilterIn",
@@ -56,6 +70,7 @@
"filterRecentlyAddedLabel",
"viewerTransitionNone",
"widgetOpenPageHome",
+ "widgetOpenPageCollection",
"widgetOpenPageViewer",
"viewDialogReverseSortOrder",
"tileLayoutMosaic",
@@ -80,6 +95,18 @@
"wallpaperUseScrollEffect"
],
+ "nl": [
+ "widgetOpenPageCollection"
+ ],
+
+ "pt": [
+ "widgetOpenPageCollection"
+ ],
+
+ "ru": [
+ "widgetOpenPageCollection"
+ ],
+
"tr": [
"chipActionFilterOut",
"chipActionFilterIn",
@@ -102,6 +129,7 @@
"wallpaperTargetLock",
"wallpaperTargetHomeLock",
"widgetOpenPageHome",
+ "widgetOpenPageCollection",
"widgetOpenPageViewer",
"menuActionSlideshow",
"viewDialogReverseSortOrder",
@@ -137,5 +165,9 @@
"viewerSetWallpaperButtonLabel",
"viewerInfoLabelDescription",
"wallpaperUseScrollEffect"
+ ],
+
+ "zh": [
+ "widgetOpenPageCollection"
]
}