diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index 035a33a762..c56d44ee9f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt @@ -33,7 +33,23 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { LOCK_DRAWER("lock_drawer"), VERTICAL_ALIGNMENT("vertical_alignment"), PERF_OVERLAY_POSITION("perf_overlay_position"), - FSR_SHARPENING_SLIDER("fsr_sharpening_slider"); + FSR_SHARPENING_SLIDER("fsr_sharpening_slider"), + CABINET_APPLET("cabinet_applet_mode"), + CONTROLLER_APPLET("controller_applet_mode"), + DATA_ERASE_APPLET("data_erase_applet_mode"), + ERROR_APPLET("error_applet_mode"), + NET_CONNECT_APPLET("net_connect_applet_mode"), + PLAYER_SELECT_APPLET("player_select_applet"), + SWKBD_APPLET("swkbd_applet_mode"), + MII_EDIT_APPLET("mii_edit_applet_mode"), + WEB_APPLET("web_applet_mode"), + SHOP_APPLET("shop_applet_mode"), + PHOTO_VIEWER_APPLET("photo_viewer_applet_mode"), + OFFLINE_WEB_APPLET("offline_web_applet_mode"), + LOGIN_SHARE_APPLET("login_share_applet_mode"), + WIFI_WEB_AUTH_APPLET("wifi_web_auth_applet_mode"), + MY_PAGE_APPLET("my_page_applet_mode"), + ; override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt index 299a192a13..f6879723fe 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt @@ -25,7 +25,8 @@ object Settings { SECTION_INPUT_PLAYER_EIGHT, SECTION_THEME(R.string.preferences_theme), SECTION_DEBUG(R.string.preferences_debug), - SECTION_EDEN_VEIL(R.string.eden_veil); + SECTION_EDEN_VEIL(R.string.eden_veil), + SECTION_APPLETS(R.string.applets_menu); } fun getPlayerString(player: Int): String = diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index dfc17bff08..71fb11c671 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -579,6 +579,16 @@ abstract class SettingsItem( override fun reset() = setBoolean(defaultValue) } put(SwitchSetting(fastmem, R.string.fastmem)) + + // Applet Settings + put( + SingleChoiceSetting( + IntSetting.SWKBD_APPLET, + titleId = R.string.swkbd_applet, + choicesId = R.array.appletEntries, + valuesId = R.array.appletValues + ) + ) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index d91906d438..4fc1540d0e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -88,7 +88,7 @@ class SettingsFragmentPresenter( MenuTag.SECTION_ROOT -> addConfigSettings(sl) MenuTag.SECTION_SYSTEM -> addSystemSettings(sl) MenuTag.SECTION_RENDERER -> addGraphicsSettings(sl) - MenuTag.SECTION_PERFORMANCE_STATS -> addPerfomanceOverlaySettings(sl) + MenuTag.SECTION_PERFORMANCE_STATS -> addPerformanceOverlaySettings(sl) MenuTag.SECTION_AUDIO -> addAudioSettings(sl) MenuTag.SECTION_INPUT -> addInputSettings(sl) MenuTag.SECTION_INPUT_PLAYER_ONE -> addInputPlayer(sl, 0) @@ -102,6 +102,7 @@ class SettingsFragmentPresenter( MenuTag.SECTION_THEME -> addThemeSettings(sl) MenuTag.SECTION_DEBUG -> addDebugSettings(sl) MenuTag.SECTION_EDEN_VEIL -> addEdenVeilSettings(sl) + MenuTag.SECTION_APPLETS -> addAppletSettings(sl) } settingsList = sl adapter.submitList(settingsList) { @@ -162,6 +163,14 @@ class SettingsFragmentPresenter( menuKey = MenuTag.SECTION_EDEN_VEIL ) ) + add( + SubmenuSetting( + titleId = R.string.applets_menu, + descriptionId = R.string.applets_menu_description, + iconId = R.drawable.ic_applet, + menuKey = MenuTag.SECTION_APPLETS + ) + ) add( RunnableSetting( titleId = R.string.reset_to_default, @@ -173,88 +182,6 @@ class SettingsFragmentPresenter( } } - private val InterpolationSetting = object : AbstractBooleanSetting { - override val key = BooleanSetting.FRAME_INTERPOLATION.key - - override fun getBoolean(needsGlobal: Boolean): Boolean { - return BooleanSetting.FRAME_INTERPOLATION.getBoolean(needsGlobal) - } - - override fun setBoolean(value: Boolean) { - BooleanSetting.FRAME_INTERPOLATION.setBoolean(value) - } - - override val defaultValue = BooleanSetting.FRAME_INTERPOLATION.defaultValue - - override fun getValueAsString(needsGlobal: Boolean): String = - BooleanSetting.FRAME_INTERPOLATION.getValueAsString(needsGlobal) - - override fun reset() = BooleanSetting.FRAME_INTERPOLATION.reset() - } - - private val syncCoreSpeedSetting = object : AbstractBooleanSetting { - override val key = BooleanSetting.CORE_SYNC_CORE_SPEED.key - - override fun getBoolean(needsGlobal: Boolean): Boolean { - return BooleanSetting.CORE_SYNC_CORE_SPEED.getBoolean(needsGlobal) - } - - override fun setBoolean(value: Boolean) { - BooleanSetting.CORE_SYNC_CORE_SPEED.setBoolean(value) - } - - override val defaultValue = BooleanSetting.CORE_SYNC_CORE_SPEED.defaultValue - - override fun getValueAsString(needsGlobal: Boolean): String = - BooleanSetting.CORE_SYNC_CORE_SPEED.getValueAsString(needsGlobal) - - override fun reset() = BooleanSetting.CORE_SYNC_CORE_SPEED.reset() - } - - private val frameSkippingSetting = object : AbstractBooleanSetting { - override val key = BooleanSetting.FRAME_SKIPPING.key - - override fun getBoolean(needsGlobal: Boolean): Boolean { - return BooleanSetting.FRAME_SKIPPING.getBoolean(needsGlobal) - } - - override fun setBoolean(value: Boolean) { - BooleanSetting.FRAME_SKIPPING.setBoolean(value) - } - - override val defaultValue = BooleanSetting.FRAME_SKIPPING.defaultValue - - override fun getValueAsString(needsGlobal: Boolean): String = - BooleanSetting.FRAME_SKIPPING.getValueAsString(needsGlobal) - - override fun reset() = BooleanSetting.FRAME_SKIPPING.reset() - } - - private fun addEdenVeilSubmenu(sl: ArrayList) { - sl.apply { - add( - SubmenuSetting( - titleId = R.string.eden_veil, - descriptionId = R.string.eden_veil_description, - iconId = R.drawable.ic_code, - menuKey = MenuTag.SECTION_EDEN_VEIL - ) - ) - addEdenVeilSettings(sl) - - add(BooleanSetting.FRAME_INTERPOLATION.key) - add(BooleanSetting.FRAME_SKIPPING.key) - add(BooleanSetting.CORE_SYNC_CORE_SPEED.key) - add(IntSetting.RENDERER_SHADER_BACKEND.key) - add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) - add(IntSetting.RENDERER_NVDEC_EMULATION.key) - add(IntSetting.RENDERER_ASTC_DECODE_METHOD.key) - add(IntSetting.RENDERER_ASTC_RECOMPRESSION.key) - add(IntSetting.RENDERER_VRAM_USAGE_MODE.key) - add(BooleanSetting.USE_LRU_CACHE.key) - } - } - private fun addSystemSettings(sl: ArrayList) { sl.apply { add(StringSetting.DEVICE_NAME.key) @@ -288,7 +215,7 @@ class SettingsFragmentPresenter( } } - private fun addPerfomanceOverlaySettings(sl: ArrayList) { + private fun addPerformanceOverlaySettings(sl: ArrayList) { sl.apply { add(HeaderSetting(R.string.stats_overlay_customization)) add(BooleanSetting.SHOW_PERFORMANCE_OVERLAY.key) @@ -457,6 +384,7 @@ class SettingsFragmentPresenter( } } + // TODO(alekpop): sort these into headers. private fun addEdenVeilSettings(sl: ArrayList) { sl.apply { add(BooleanSetting.FRAME_INTERPOLATION.key) @@ -479,6 +407,12 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) } } + + private fun addAppletSettings(sl: ArrayList) { + sl.apply { + add(IntSetting.SWKBD_APPLET.key) + } + } private fun addInputPlayer(sl: ArrayList, playerIndex: Int) { sl.apply { val connectedSetting = object : AbstractBooleanSetting { diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index cb108dc548..04779469cc 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -410,14 +410,23 @@ - @string/never - @string/on_load - @string/always - - - 0 - 1 - 2 - + @string/never + @string/on_load + @string/always + + + 0 + 1 + 2 + + + @string/applet_hle + @string/applet_lle + + + + 0 + 1 + diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index efb8178e68..6a143e1a27 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -859,6 +859,15 @@ Center Bottom + + Applets + (WIP) Change applet frontends and settings + + Custom Frontend + Real Applet + + Software Keyboard + Licenses FidelityFX-FSR