diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreen.kt index 6bc64c1b..d53d034d 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/layout/LayoutSettingsScreen.kt @@ -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) + }, + ) } } } 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 d6d7b1fc..f1b6c768 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,5 +1,6 @@ package de.mm20.launcher2.ui.settings.layout +import android.content.pm.ActivityInfo import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope @@ -57,4 +58,15 @@ class LayoutSettingsScreenVM: ViewModel(), KoinComponent { } } } + + val fixedRotation = dataStore.data.map { it.layout.fixedRoation }.asLiveData() + fun setFixedRotation(fixedRotation: Boolean) { + viewModelScope.launch { + dataStore.updateData { + it.toBuilder() + .setLayout(it.layout.toBuilder().setFixedRotation(fixedRotation)) + .build() + } + } + } } \ 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 2b2340d0..bb474150 100644 --- a/core/i18n/src/main/res/values/strings.xml +++ b/core/i18n/src/main/res/values/strings.xml @@ -734,6 +734,8 @@ Bottom-up Fixed search bar Don\'t scroll the search bar out of view + Fixed rotation + Lock rotation to portrait mode Gestures Gestures and gesture actions Swipe down diff --git a/core/preferences/src/main/java/de/mm20/launcher2/preferences/Defaults.kt b/core/preferences/src/main/java/de/mm20/launcher2/preferences/Defaults.kt index 31c54df8..b4287358 100644 --- a/core/preferences/src/main/java/de/mm20/launcher2/preferences/Defaults.kt +++ b/core/preferences/src/main/java/de/mm20/launcher2/preferences/Defaults.kt @@ -168,6 +168,7 @@ fun createFactorySettings(context: Context): Settings { .setBaseLayout(Settings.LayoutSettings.Layout.PullDown) .setBottomSearchBar(false) .setReverseSearchResults(false) + .setFixedRotation(false) ) .setGestures( Settings.GestureSettings.newBuilder() diff --git a/core/preferences/src/main/proto/settings.proto b/core/preferences/src/main/proto/settings.proto index afb2a63d..a8503cee 100644 --- a/core/preferences/src/main/proto/settings.proto +++ b/core/preferences/src/main/proto/settings.proto @@ -298,6 +298,7 @@ message Settings { bool bottom_search_bar = 2; bool reverse_search_results = 3; bool fixed_search_bar = 4; + bool fixed_rotation = 5; } LayoutSettings layout = 27;