Added option for software keyboard applet on android (#113)

Signed-off-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/113
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
This commit is contained in:
Aleksandr Popovich 2025-05-19 21:28:51 +00:00 committed by AlekPop
parent ed4b011cad
commit 244c07c999
6 changed files with 74 additions and 95 deletions

View file

@ -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)

View file

@ -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 =

View file

@ -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
)
)
}
}
}

View file

@ -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<SettingsItem>) {
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<SettingsItem>) {
sl.apply {
add(StringSetting.DEVICE_NAME.key)
@ -288,7 +215,7 @@ class SettingsFragmentPresenter(
}
}
private fun addPerfomanceOverlaySettings(sl: ArrayList<SettingsItem>) {
private fun addPerformanceOverlaySettings(sl: ArrayList<SettingsItem>) {
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<SettingsItem>) {
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<SettingsItem>) {
sl.apply {
add(IntSetting.SWKBD_APPLET.key)
}
}
private fun addInputPlayer(sl: ArrayList<SettingsItem>, playerIndex: Int) {
sl.apply {
val connectedSetting = object : AbstractBooleanSetting {

View file

@ -410,14 +410,23 @@
</integer-array>
<string-array name="optimizeSpirvOutputEntries">
<item>@string/never</item>
<item>@string/on_load</item>
<item>@string/always</item>
</string-array>
<integer-array name="optimizeSpirvOutputValues">
<item>0</item>
<item>1</item>
<item>2</item>
</integer-array>
<item>@string/never</item>
<item>@string/on_load</item>
<item>@string/always</item>
</string-array>
<integer-array name="optimizeSpirvOutputValues">
<item>0</item>
<item>1</item>
<item>2</item>
</integer-array>
<string-array name="appletEntries">
<item>@string/applet_hle</item>
<item>@string/applet_lle</item>
</string-array>
<integer-array name="appletValues">
<item>0</item>
<item>1</item>
</integer-array>
</resources>

View file

@ -859,6 +859,15 @@
<string name="center">Center</string>
<string name="bottom">Bottom</string>
<!-- Applet Modes -->
<string name="applets_menu">Applets</string>
<string name="applets_menu_description">(WIP) Change applet frontends and settings</string>
<string name="applet_hle">Custom Frontend</string>
<string name="applet_lle">Real Applet</string>
<string name="swkbd_applet">Software Keyboard</string>
<!-- Licenses screen strings -->
<string name="licenses">Licenses</string>
<string name="license_fidelityfx_fsr" translatable="false">FidelityFX-FSR</string>