diff --git a/app/ui/src/main/AndroidManifest.xml b/app/ui/src/main/AndroidManifest.xml index 5cb274a4..3aa9158b 100644 --- a/app/ui/src/main/AndroidManifest.xml +++ b/app/ui/src/main/AndroidManifest.xml @@ -12,8 +12,7 @@ android:theme="@style/LauncherTheme" android:stateNotNeeded="true" android:resumeWhilePausing="true" - android:windowSoftInputMode="stateHidden|adjustResize" - android:screenOrientation="portrait"> + android:windowSoftInputMode="stateHidden|adjustResize"> diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherScaffoldVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherScaffoldVM.kt index cd28cb61..78571a76 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherScaffoldVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherScaffoldVM.kt @@ -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) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt index 4b6ba46c..83b584cf 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt @@ -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 + ActivityInfo.SCREEN_ORIENTATION_NOSENSOR + } else { + ActivityInfo.SCREEN_ORIENTATION_SENSOR + } + } + + val systemUiController = rememberSystemUiController() val enterTransitionProgress = remember { mutableStateOf(1f) } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreenVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreenVM.kt index f1b6c768..bf7fe33f 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreenVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreenVM.kt @@ -1,6 +1,5 @@ package de.mm20.launcher2.ui.settings.layout -import android.content.pm.ActivityInfo import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope @@ -59,7 +58,7 @@ class LayoutSettingsScreenVM: ViewModel(), KoinComponent { } } - val fixedRotation = dataStore.data.map { it.layout.fixedRoation }.asLiveData() + val fixedRotation = dataStore.data.map { it.layout.fixedRotation }.asLiveData() fun setFixedRotation(fixedRotation: Boolean) { viewModelScope.launch { dataStore.updateData { diff --git a/core/i18n/src/main/res/values-de/strings.xml b/core/i18n/src/main/res/values-de/strings.xml index dc332ecd..6d298ac5 100644 --- a/core/i18n/src/main/res/values-de/strings.xml +++ b/core/i18n/src/main/res/values-de/strings.xml @@ -568,4 +568,6 @@ Sie haben eine „%1$s“-Geste ausgeführt. Diese Geste ist momentan konfiguriert, eine „%2$s“-Aktion auszulösen. Diese Aktion konnte aus dem folgenden Grund nicht durchgeführt werden: Angeheftete Suchleiste Suchleiste nicht aus dem Sichtbereich herausscrollen + Fixierte Bildschirmausrichtung + Erzwingt Porträtmodus des Launchers \ No newline at end of file diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml index bb474150..39f8ee4a 100644 --- a/core/i18n/src/main/res/values/strings.xml +++ b/core/i18n/src/main/res/values/strings.xml @@ -734,8 +734,8 @@ Bottom-up Fixed search bar Don\'t scroll the search bar out of view - Fixed rotation - Lock rotation to portrait mode + Fixed screen rotation + Lock screen rotation to portrait mode Gestures Gestures and gesture actions Swipe down