diff --git a/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt index a86553e..0365733 100644 --- a/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt +++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt @@ -81,11 +81,8 @@ fun AgendulaNavHost( navController = nav, startDestination = Dest.LISTS, modifier = modifier, - // Calendula's overlay motion: only the screen on top moves. It slides in - // over the held screen and leaves the way floret's predictiveBackExit - // does. A back swipe seeks that exit, with the previous screen drawn - // underneath — which only NavHost's own handler can do, so destinations - // must not register a preview of their own. + // Calendula's overlay motion. NavHost's own back handler seeks the exit + // over the previous screen, so destinations don't add a preview of their own. enterTransition = { slideInHorizontally(slideSpec) { it } + fadeIn() }, exitTransition = { ExitTransition.None }, popEnterTransition = { EnterTransition.None }, diff --git a/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt index f71e3bd..35509ff 100644 --- a/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt @@ -74,7 +74,7 @@ internal enum class SettingsSection { Licences, ; - /** Where back goes: export and import are opened from Backup, the account screens from Accounts. */ + /** The section that stays composed underneath: Backup under export and import, Accounts under its screens. */ val parent: SettingsSection? get() = when (this) { Export, Import -> Backup @@ -109,6 +109,8 @@ fun SettingsScreen( else SettingsSection.entries.firstOrNull { it.name == initialSection }, ) } + // Import's "open storage" comes back to Import rather than the hub. + var storageReturn by rememberSaveable { mutableStateOf(null) } Box( modifier = modifier @@ -131,7 +133,14 @@ fun SettingsScreen( } val storage = section == SettingsSection.Storage SlideInSection(visible = storage) { - StorageScreen(viewModel = viewModel, onBack = { section = null }, visible = storage) + StorageScreen( + viewModel = viewModel, + onBack = { + section = storageReturn + storageReturn = null + }, + visible = storage, + ) } // Backup stays composed under export and import, so the deeper screen slides over it. val backup = section == SettingsSection.Backup || section?.parent == SettingsSection.Backup @@ -151,7 +160,10 @@ fun SettingsScreen( SlideInSection(visible = importOpen) { ImportScreen( onBack = { section = SettingsSection.Backup }, - onOpenStorage = { section = SettingsSection.Storage }, + onOpenStorage = { + storageReturn = SettingsSection.Import + section = SettingsSection.Storage + }, predictiveBack = true, visible = importOpen, ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3d7bd0..c64bd5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -123,7 +123,7 @@ Weeks Per-list reminders Override the default per list — separately for timed and all-day tasks. A list can keep the default, drop it, or set its own. - Notifications + Sound & vibration Sound, vibration and importance for this list’s reminders Default (%1$s) diff --git a/floret-kit b/floret-kit index 5093e1c..da04428 160000 --- a/floret-kit +++ b/floret-kit @@ -1 +1 @@ -Subproject commit 5093e1cc5fe40c766f1354fc87762080051241b8 +Subproject commit da04428162d4ca32db2d2db02ce56f3fda4ab3d1