Add the upright_screen boolean to the UI as a switch & in-game

This commit is contained in:
Kleidis 2025-03-11 15:24:40 +01:00
parent 2282f6f3cf
commit 7cc055d313
8 changed files with 46 additions and 1 deletions

View File

@ -68,4 +68,13 @@ class ScreenAdjustmentUtil(
settings.saveSetting(IntSetting.ORIENTATION_OPTION, SettingsFile.FILE_NAME_CONFIG) settings.saveSetting(IntSetting.ORIENTATION_OPTION, SettingsFile.FILE_NAME_CONFIG)
activity.requestedOrientation = orientationOption activity.requestedOrientation = orientationOption
} }
fun toggleScreenUpright() {
val uprightBoolean = BooleanSetting.UPRIGHT_SCREEN.boolean
BooleanSetting.UPRIGHT_SCREEN.boolean = !uprightBoolean
settings.saveSetting(BooleanSetting.UPRIGHT_SCREEN, SettingsFile.FILE_NAME_CONFIG)
NativeLibrary.reloadSettings()
NativeLibrary.updateFramebuffer(NativeLibrary.isPortraitMode)
}
} }

View File

@ -15,6 +15,7 @@ enum class BooleanSetting(
ALLOW_PLUGIN_LOADER("allow_plugin_loader", Settings.SECTION_SYSTEM, true), ALLOW_PLUGIN_LOADER("allow_plugin_loader", Settings.SECTION_SYSTEM, true),
SWAP_SCREEN("swap_screen", Settings.SECTION_LAYOUT, false), SWAP_SCREEN("swap_screen", Settings.SECTION_LAYOUT, false),
INSTANT_DEBUG_LOG("instant_debug_log", Settings.SECTION_DEBUG, false), INSTANT_DEBUG_LOG("instant_debug_log", Settings.SECTION_DEBUG, false),
UPRIGHT_SCREEN("upright_screen", Settings.SECTION_LAYOUT, false),
CUSTOM_LAYOUT("custom_layout",Settings.SECTION_LAYOUT,false); CUSTOM_LAYOUT("custom_layout",Settings.SECTION_LAYOUT,false);
override var boolean: Boolean = defaultValue override var boolean: Boolean = defaultValue

View File

@ -951,6 +951,15 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
IntSetting.SCREEN_LAYOUT.defaultValue IntSetting.SCREEN_LAYOUT.defaultValue
) )
) )
add(
SwitchSetting(
BooleanSetting.UPRIGHT_SCREEN,
R.string.emulation_rotate_upright,
0,
BooleanSetting.UPRIGHT_SCREEN.key,
BooleanSetting.UPRIGHT_SCREEN.defaultValue
)
)
add( add(
SingleChoiceSetting( SingleChoiceSetting(
IntSetting.PORTRAIT_SCREEN_LAYOUT, IntSetting.PORTRAIT_SCREEN_LAYOUT,

View File

@ -287,6 +287,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
true true
} }
R.id.menu_rotate_upright -> {
screenAdjustmentUtil.toggleScreenUpright()
true
}
R.id.menu_lock_drawer -> { R.id.menu_lock_drawer -> {
when (EmulationMenuSettings.drawerLockMode) { when (EmulationMenuSettings.drawerLockMode) {
DrawerLayout.LOCK_MODE_UNLOCKED -> { DrawerLayout.LOCK_MODE_UNLOCKED -> {

View File

@ -199,6 +199,7 @@ void Config::ReadValues() {
ReadSetting("Layout", Settings::values.cardboard_screen_size); ReadSetting("Layout", Settings::values.cardboard_screen_size);
ReadSetting("Layout", Settings::values.cardboard_x_shift); ReadSetting("Layout", Settings::values.cardboard_x_shift);
ReadSetting("Layout", Settings::values.cardboard_y_shift); ReadSetting("Layout", Settings::values.cardboard_y_shift);
ReadSetting("Layout", Settings::values.upright_screen);
Settings::values.portrait_layout_option = Settings::values.portrait_layout_option =
static_cast<Settings::PortraitLayoutOption>(sdl2_config->GetInteger( static_cast<Settings::PortraitLayoutOption>(sdl2_config->GetInteger(

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M16,18l2.29,-2.29 -4.88,-4.88 -4,4L2,7.41 3.41,6l6,6 4,-4 6.3,6.29L22,12v6z"/>
<path
android:fillColor="#FFFFFF"
android:pathData="M12,2L8,6h4v3h2V6h4L12,2z"/>
</vector>

View File

@ -35,9 +35,13 @@
<item <item
android:id="@+id/menu_swap_screens" android:id="@+id/menu_swap_screens"
android:icon="@drawable/ic_splitscreen" android:icon="@drawable/ic_splitscreen"
android:title="@string/emulation_swap_screens" /> android:title="@string/emulation_swap_screens" />
<item
android:id="@+id/menu_rotate_upright"
android:icon="@drawable/ic_rotate_up_right"
android:title="@string/emulation_rotate_upright" />
<item <item
android:id="@+id/menu_lock_drawer" android:id="@+id/menu_lock_drawer"
android:icon="@drawable/ic_unlocked" android:icon="@drawable/ic_unlocked"

View File

@ -132,6 +132,7 @@
<string name="button_start" translatable="false">START</string> <string name="button_start" translatable="false">START</string>
<string name="button_home">HOME</string> <string name="button_home">HOME</string>
<string name="button_swap">Swap Screens</string> <string name="button_swap">Swap Screens</string>
<string name="emulation_rotate_upright">Rotate Screen Upright</string>
<string name="button_x" translatable="false">X</string> <string name="button_x" translatable="false">X</string>
<string name="button_y" translatable="false">Y</string> <string name="button_y" translatable="false">Y</string>
<string name="button_l" translatable="false">L</string> <string name="button_l" translatable="false">L</string>