Add options to hide system bars
This commit is contained in:
@@ -4,9 +4,13 @@ import android.app.WallpaperManager
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.*
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.afollestad.materialdialogs.LayoutMode
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
|
||||
@@ -14,12 +18,14 @@ import com.afollestad.materialdialogs.callbacks.onDismiss
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import de.mm20.launcher2.icons.DynamicIconController
|
||||
import de.mm20.launcher2.icons.IconRepository
|
||||
import de.mm20.launcher2.ui.legacy.helper.ActivityStarter
|
||||
import de.mm20.launcher2.ui.R
|
||||
import de.mm20.launcher2.ui.base.BaseActivity
|
||||
import de.mm20.launcher2.ui.databinding.ActivityLauncherBinding
|
||||
import de.mm20.launcher2.ui.launcher.modals.EditFavoritesView
|
||||
import de.mm20.launcher2.ui.launcher.modals.HiddenItemsView
|
||||
import de.mm20.launcher2.ui.legacy.helper.ActivityStarter
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.android.ext.android.inject
|
||||
|
||||
|
||||
@@ -53,13 +59,31 @@ class LauncherActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
val windowController = WindowInsetsControllerCompat(window, binding.rootView)
|
||||
windowController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
|
||||
viewModel.lightStatusBar.observe(this) {
|
||||
windowController.isAppearanceLightStatusBars = it
|
||||
}
|
||||
|
||||
viewModel.lightNavBar.observe(this) {
|
||||
windowController.isAppearanceLightNavigationBars = it
|
||||
}
|
||||
|
||||
viewModel.hideStatusBar.observe(this) {
|
||||
if (it) {
|
||||
windowController.hide(WindowInsetsCompat.Type.statusBars())
|
||||
} else {
|
||||
windowController.show(WindowInsetsCompat.Type.statusBars())
|
||||
}
|
||||
}
|
||||
viewModel.hideNavBar.observe(this) {
|
||||
if (it) {
|
||||
windowController.hide(WindowInsetsCompat.Type.navigationBars())
|
||||
} else {
|
||||
windowController.show(WindowInsetsCompat.Type.navigationBars())
|
||||
}
|
||||
}
|
||||
|
||||
var editFavoritesDialog: MaterialDialog? = null
|
||||
viewModel.isEditFavoritesShown.observe(this) {
|
||||
if (it) {
|
||||
|
||||
@@ -40,6 +40,9 @@ class LauncherActivityVM : ViewModel(), KoinComponent {
|
||||
!dim && light
|
||||
}.asLiveData()
|
||||
|
||||
val hideNavBar = dataStore.data.map { it.systemBars.hideNavBar }.asLiveData()
|
||||
val hideStatusBar = dataStore.data.map { it.systemBars.hideStatusBar }.asLiveData()
|
||||
|
||||
fun setDarkMode(darkMode: Boolean) {
|
||||
isDarkInMode.value = darkMode
|
||||
}
|
||||
|
||||
@@ -194,6 +194,22 @@ fun AppearanceSettingsScreen() {
|
||||
viewModel.setLightNavBar(it)
|
||||
}
|
||||
)
|
||||
val hideStatusBar by viewModel.hideStatusBar.observeAsState()
|
||||
SwitchPreference(
|
||||
title = stringResource(R.string.preference_hide_status_bar),
|
||||
value = hideStatusBar == true,
|
||||
onValueChanged = {
|
||||
viewModel.setHideStatusBar(it)
|
||||
}
|
||||
)
|
||||
val hideNavBar by viewModel.hideNavBar.observeAsState()
|
||||
SwitchPreference(
|
||||
title = stringResource(R.string.preference_hide_nav_bar),
|
||||
value = hideNavBar == true,
|
||||
onValueChanged = {
|
||||
viewModel.setHideNavBar(it)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+28
@@ -178,4 +178,32 @@ class AppearanceSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val hideStatusBar = dataStore.data.map { it.systemBars.hideStatusBar }.asLiveData()
|
||||
fun setHideStatusBar(hideStatusBar: Boolean) {
|
||||
viewModelScope.launch {
|
||||
dataStore.updateData {
|
||||
it.toBuilder()
|
||||
.setSystemBars(
|
||||
it.systemBars.toBuilder()
|
||||
.setHideStatusBar(hideStatusBar)
|
||||
)
|
||||
.build()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val hideNavBar = dataStore.data.map { it.systemBars.hideNavBar }.asLiveData()
|
||||
fun setHideNavBar(hideNavBar: Boolean) {
|
||||
viewModelScope.launch {
|
||||
dataStore.updateData {
|
||||
it.toBuilder()
|
||||
.setSystemBars(
|
||||
it.systemBars.toBuilder()
|
||||
.setHideNavBar(hideNavBar)
|
||||
)
|
||||
.build()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user