Save bottom sheet state
This commit is contained in:
parent
b359cf8897
commit
ca29a908aa
@ -84,7 +84,7 @@ abstract class SharedLauncherActivity(
|
|||||||
|
|
||||||
viewModel.setSystemInDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)
|
viewModel.setSystemInDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)
|
||||||
|
|
||||||
val bottomSheetManager = LauncherBottomSheetManager()
|
val bottomSheetManager = LauncherBottomSheetManager(this)
|
||||||
val gestureDetector = GestureDetector()
|
val gestureDetector = GestureDetector()
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
|
|||||||
@ -1,17 +1,48 @@
|
|||||||
package de.mm20.launcher2.ui.launcher.sheets
|
package de.mm20.launcher2.ui.launcher.sheets
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
import androidx.compose.runtime.compositionLocalOf
|
import androidx.compose.runtime.compositionLocalOf
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.runtime.staticCompositionLocalOf
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
|
import androidx.savedstate.SavedStateRegistry
|
||||||
|
import androidx.savedstate.SavedStateRegistryOwner
|
||||||
import de.mm20.launcher2.search.SavableSearchable
|
import de.mm20.launcher2.search.SavableSearchable
|
||||||
|
|
||||||
class LauncherBottomSheetManager {
|
class LauncherBottomSheetManager(registryOwner: SavedStateRegistryOwner) :
|
||||||
|
SavedStateRegistry.SavedStateProvider {
|
||||||
val customizeSearchableSheetShown = mutableStateOf<SavableSearchable?>(null)
|
val customizeSearchableSheetShown = mutableStateOf<SavableSearchable?>(null)
|
||||||
val editFavoritesSheetShown = mutableStateOf(false)
|
val editFavoritesSheetShown = mutableStateOf(false)
|
||||||
val hiddenItemsSheetShown = mutableStateOf(false)
|
val hiddenItemsSheetShown = mutableStateOf(false)
|
||||||
|
|
||||||
|
init {
|
||||||
|
registryOwner.lifecycle.addObserver(LifecycleEventObserver { _, event ->
|
||||||
|
if (event == Lifecycle.Event.ON_CREATE) {
|
||||||
|
val registry = registryOwner.savedStateRegistry
|
||||||
|
|
||||||
|
registry.registerSavedStateProvider(PROVIDER, this)
|
||||||
|
|
||||||
|
val state = registry.consumeRestoredStateForKey(PROVIDER)
|
||||||
|
|
||||||
|
editFavoritesSheetShown.value = state?.getBoolean(FAVORITES) ?: false
|
||||||
|
hiddenItemsSheetShown.value = state?.getBoolean(HIDDEN) ?: false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun saveState(): Bundle {
|
||||||
|
return bundleOf(
|
||||||
|
FAVORITES to editFavoritesSheetShown.value,
|
||||||
|
HIDDEN to hiddenItemsSheetShown.value
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun showCustomizeSearchableModal(item: SavableSearchable) {
|
fun showCustomizeSearchableModal(item: SavableSearchable) {
|
||||||
customizeSearchableSheetShown.value = item
|
customizeSearchableSheetShown.value = item
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dismissCustomizeSearchableModal() {
|
fun dismissCustomizeSearchableModal() {
|
||||||
customizeSearchableSheetShown.value = null
|
customizeSearchableSheetShown.value = null
|
||||||
}
|
}
|
||||||
@ -19,6 +50,7 @@ class LauncherBottomSheetManager {
|
|||||||
fun showEditFavoritesSheet() {
|
fun showEditFavoritesSheet() {
|
||||||
editFavoritesSheetShown.value = true
|
editFavoritesSheetShown.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dismissEditFavoritesSheet() {
|
fun dismissEditFavoritesSheet() {
|
||||||
editFavoritesSheetShown.value = false
|
editFavoritesSheetShown.value = false
|
||||||
}
|
}
|
||||||
@ -26,9 +58,17 @@ class LauncherBottomSheetManager {
|
|||||||
fun showHiddenItemsSheet() {
|
fun showHiddenItemsSheet() {
|
||||||
hiddenItemsSheetShown.value = true
|
hiddenItemsSheetShown.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dismissHiddenItemsSheet() {
|
fun dismissHiddenItemsSheet() {
|
||||||
hiddenItemsSheetShown.value = false
|
hiddenItemsSheetShown.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val PROVIDER = "bottom_sheet_manager"
|
||||||
|
private const val FAVORITES = "favorites"
|
||||||
|
private const val HIDDEN = "hidden"
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val LocalBottomSheetManager = compositionLocalOf { LauncherBottomSheetManager() }
|
val LocalBottomSheetManager = staticCompositionLocalOf<LauncherBottomSheetManager> { throw IllegalStateException("No BottomSheetManager provided") }
|
||||||
Loading…
x
Reference in New Issue
Block a user