diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt index cfd60ec3e..67cc1de06 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt @@ -251,6 +251,11 @@ open class MainActivity : FlutterFragmentActivity() { open fun extractIntentData(intent: Intent?): MutableMap { when (val action = intent?.action) { Intent.ACTION_MAIN -> { + if (intent.getBooleanExtra(EXTRA_KEY_SAFE_MODE, false)) { + return hashMapOf( + INTENT_DATA_KEY_SAFE_MODE to true, + ) + } intent.getStringExtra(EXTRA_KEY_PAGE)?.let { page -> val filters = extractFiltersFromIntent(intent) return hashMapOf( @@ -393,7 +398,16 @@ open class MainActivity : FlutterFragmentActivity() { ) .build() - ShortcutManagerCompat.setDynamicShortcuts(this, listOf(videos, search)) + val safeMode = ShortcutInfoCompat.Builder(this, "safeMode") + .setShortLabel(getString(R.string.safe_mode_shortcut_short_label)) + .setIcon(IconCompat.createWithResource(this, if (supportAdaptiveIcon) R.mipmap.ic_shortcut_safe_mode else R.drawable.ic_shortcut_safe_mode)) + .setIntent( + Intent(Intent.ACTION_MAIN, null, this, MainActivity::class.java) + .putExtra(EXTRA_KEY_SAFE_MODE, true) + ) + .build() + + ShortcutManagerCompat.setDynamicShortcuts(this, listOf(videos, search, safeMode)) } private fun onAnalysisCompleted() { @@ -428,12 +442,14 @@ open class MainActivity : FlutterFragmentActivity() { const val INTENT_DATA_KEY_MIME_TYPE = "mimeType" const val INTENT_DATA_KEY_PAGE = "page" const val INTENT_DATA_KEY_QUERY = "query" + const val INTENT_DATA_KEY_SAFE_MODE = "safeMode" const val INTENT_DATA_KEY_URI = "uri" const val INTENT_DATA_KEY_WIDGET_ID = "widgetId" const val EXTRA_KEY_PAGE = "page" const val EXTRA_KEY_FILTERS_ARRAY = "filters" const val EXTRA_KEY_FILTERS_STRING = "filtersString" + const val EXTRA_KEY_SAFE_MODE = "safeMode" const val EXTRA_KEY_WIDGET_ID = "widgetId" // request code to pending runnable diff --git a/android/app/src/main/res/drawable-v21/ic_shortcut_safe_mode.xml b/android/app/src/main/res/drawable-v21/ic_shortcut_safe_mode.xml new file mode 100644 index 000000000..dc918373c --- /dev/null +++ b/android/app/src/main/res/drawable-v21/ic_shortcut_safe_mode.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/android/app/src/main/res/drawable-v26/ic_shortcut_safe_mode_foreground.xml b/android/app/src/main/res/drawable-v26/ic_shortcut_safe_mode_foreground.xml new file mode 100644 index 000000000..fe957d665 --- /dev/null +++ b/android/app/src/main/res/drawable-v26/ic_shortcut_safe_mode_foreground.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut_safe_mode.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut_safe_mode.xml new file mode 100644 index 000000000..40f9ff006 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut_safe_mode.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index cb2b215c0..f0f317c96 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ Aves Photo Frame Wallpaper + Safe mode Search Videos Media scan diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index f4cbd7dbb..ff4defde4 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -73,6 +73,7 @@ class _HomePageState extends State { static const intentDataKeyMimeType = 'mimeType'; static const intentDataKeyPage = 'page'; static const intentDataKeyQuery = 'query'; + static const intentDataKeySafeMode = 'safeMode'; static const intentDataKeyUri = 'uri'; static const intentDataKeyWidgetId = 'widgetId'; @@ -102,6 +103,7 @@ class _HomePageState extends State { var appMode = AppMode.main; final intentData = widget.intentData ?? await IntentService.getIntentData(); + final safeMode = intentData[intentDataKeySafeMode] ?? false; final intentAction = intentData[intentDataKeyAction]; _initialFilters = null; @@ -205,6 +207,7 @@ class _HomePageState extends State { final source = context.read(); await source.init( loadTopEntriesFirst: settings.homePage == HomePageSetting.collection, + canAnalyze: !safeMode, ); break; case AppMode.screenSaver: