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;