Merge pull request #241 from Sir-Photch/main

Add layout-option to restrict rotation to portrait mode
This commit is contained in:
U. N. Owen
2023-02-03 22:34:04 +01:00
committed by GitHub
8 changed files with 38 additions and 0 deletions
@@ -67,6 +67,7 @@ class LauncherScaffoldVM : ViewModel(), KoinComponent {
val bottomSearchBar = dataStore.data.map { it.layout.bottomSearchBar }.asLiveData()
val reverseSearchResults = dataStore.data.map { it.layout.reverseSearchResults }.asLiveData()
val fixedSearchBar = dataStore.data.map { it.layout.fixedSearchBar }.asLiveData()
val fixedRotation = dataStore.data.map { it.layout.fixedRotation }.asLiveData()
val isSearchOpen = MutableLiveData(false)
val isWidgetEditMode = MutableLiveData(false)
@@ -1,6 +1,7 @@
package de.mm20.launcher2.ui.launcher
import android.app.WallpaperManager
import android.content.pm.ActivityInfo
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Bundle
@@ -35,6 +36,7 @@ import androidx.compose.ui.unit.dp
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.Observer
import androidx.lifecycle.flowWithLifecycle
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import de.mm20.launcher2.globalactions.GlobalActionsService
@@ -132,6 +134,15 @@ abstract class SharedLauncherActivity(
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState(false)
val fixedSearchBar by viewModel.fixedSearchBar.observeAsState(false)
viewModel.fixedRotation.observe(this) { fixedRotation ->
requestedOrientation = if (fixedRotation) {
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
} else {
ActivityInfo.SCREEN_ORIENTATION_USER
}
}
val systemUiController = rememberSystemUiController()
val enterTransitionProgress = remember { mutableStateOf(1f) }
@@ -64,6 +64,15 @@ fun LayoutSettingsScreen() {
if (it != null) viewModel.setReverseSearchResults(it)
},
)
val fixedRotation by viewModel.fixedRotation.observeAsState()
SwitchPreference(
title = stringResource(R.string.preference_layout_fixed_rotation),
summary = stringResource(R.string.preference_layout_fixed_rotation_summary),
value = fixedRotation == true,
onValueChanged = {
viewModel.setFixedRotation(it)
},
)
}
}
}
@@ -57,4 +57,15 @@ class LayoutSettingsScreenVM: ViewModel(), KoinComponent {
}
}
}
val fixedRotation = dataStore.data.map { it.layout.fixedRotation }.asLiveData()
fun setFixedRotation(fixedRotation: Boolean) {
viewModelScope.launch {
dataStore.updateData {
it.toBuilder()
.setLayout(it.layout.toBuilder().setFixedRotation(fixedRotation))
.build()
}
}
}
}