Android: Treat EmulationActivity dialog dismiss the same as OK

In the dialog where you can choose what controller the input overlay
should be controlling, there's an OK button. If you change controller
but don't press OK, your selection will be saved, but the input overlay
won't refresh to show the new controller unless you perform some other
action that would cause it to refresh. This is not good UX.

This commit changes the behavior not only of this dialog but also other
dialogs spawned by EmulationActivity so that everything is properly
updated when dismissing a dialog, as if you had pressed OK.
This commit is contained in:
JosJuice 2025-10-17 22:38:52 +02:00
parent b74c3faa48
commit a026a0d5e4

View File

@ -561,6 +561,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting.valueOf(gcSettingBase + indexSelected)
.setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
}
InputOverlay.OVERLAY_WIIMOTE_CLASSIC -> {
@ -575,6 +576,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting.valueOf(classicSettingBase + indexSelected)
.setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
}
InputOverlay.OVERLAY_WIIMOTE_NUNCHUK -> {
@ -596,6 +598,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting.valueOf(nunchukSettingBase + translateToSettingsIndex(indexSelected))
.setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
}
else -> {
@ -611,14 +614,13 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting.valueOf(wiimoteSettingBase + indexSelected)
.setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
}
}
builder
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
emulationFragment?.refreshInputOverlay()
}
.setPositiveButton(R.string.ok, null)
.show()
}
@ -640,6 +642,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting
.valueOf(gcSettingBase + indexSelected).setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
} else if (currentController == InputOverlay.OVERLAY_WIIMOTE_CLASSIC) {
val wiiClassicEnabledButtons = BooleanArray(14)
@ -653,6 +656,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting.valueOf(classicSettingBase + indexSelected)
.setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
} else {
val wiiEnabledButtons = BooleanArray(11)
@ -667,6 +671,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting
.valueOf(wiiSettingBase + indexSelected).setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
} else {
builder.setMultiChoiceItems(
@ -674,6 +679,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
) { _: DialogInterface?, indexSelected: Int, isChecked: Boolean ->
BooleanSetting
.valueOf(wiiSettingBase + indexSelected).setBoolean(settings, isChecked)
emulationFragment?.refreshInputOverlay()
}
}
}
@ -682,7 +688,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
.setNeutralButton(R.string.emulation_toggle_all) { _: DialogInterface?, _: Int ->
emulationFragment!!.toggleInputOverlayVisibility(settings)
}
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int -> emulationFragment?.refreshInputOverlay() }
.setPositiveButton(R.string.ok, null)
.show()
}
@ -707,10 +713,9 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
settings,
InputOverlayPointer.DOUBLE_TAP_OPTIONS[which]
)
}
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
emulationFragment?.initInputPointer()
}
.setPositiveButton(R.string.ok, null)
.show()
}
@ -721,9 +726,11 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
valueTo = 150f
value = IntSetting.MAIN_CONTROL_SCALE.int.toFloat()
stepSize = 1f
addOnChangeListener(Slider.OnChangeListener { _: Slider?, progress: Float, _: Boolean ->
dialogBinding.inputScaleValue.text = "${(progress.toInt() + 50)}%"
})
addOnChangeListener { _: Slider?, value: Float, _: Boolean ->
dialogBinding.inputScaleValue.text = "${(value.toInt() + 50)}%"
IntSetting.MAIN_CONTROL_SCALE.setInt(settings, value.toInt())
emulationFragment?.refreshInputOverlay()
}
}
inputScaleValue.text =
"${(dialogBinding.inputScaleSlider.value.toInt() + 50)}%"
@ -732,9 +739,11 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
valueTo = 100f
value = IntSetting.MAIN_CONTROL_OPACITY.int.toFloat()
stepSize = 1f
addOnChangeListener(Slider.OnChangeListener { _: Slider?, progress: Float, _: Boolean ->
inputOpacityValue.text = progress.toInt().toString() + "%"
})
addOnChangeListener { _: Slider?, value: Float, _: Boolean ->
inputOpacityValue.text = value.toInt().toString() + "%"
IntSetting.MAIN_CONTROL_OPACITY.setInt(settings, value.toInt())
emulationFragment?.refreshInputOverlay()
}
}
inputOpacityValue.text = inputOpacitySlider.value.toInt().toString() + "%"
}
@ -742,17 +751,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
MaterialAlertDialogBuilder(this)
.setTitle(R.string.emulation_control_adjustments)
.setView(dialogBinding.root)
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
IntSetting.MAIN_CONTROL_SCALE.setInt(
settings,
dialogBinding.inputScaleSlider.value.toInt()
)
IntSetting.MAIN_CONTROL_OPACITY.setInt(
settings,
dialogBinding.inputOpacitySlider.value.toInt()
)
emulationFragment?.refreshInputOverlay()
}
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.default_values) { _: DialogInterface?, _: Int ->
IntSetting.MAIN_CONTROL_SCALE.delete(settings)
IntSetting.MAIN_CONTROL_OPACITY.delete(settings)
@ -858,10 +857,9 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
entries.toArray(arrayOf<CharSequence>()), checkedItem
) { _: DialogInterface?, indexSelected: Int ->
controllerSetting.setInt(settings, values[indexSelected])
}
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
emulationFragment?.refreshInputOverlay()
}
.setPositiveButton(R.string.ok, null)
.setNeutralButton(
R.string.emulation_more_controller_settings
) { _: DialogInterface?, _: Int -> SettingsActivity.launch(this, MenuTag.SETTINGS) }
@ -876,10 +874,9 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
IntSetting.MAIN_IR_MODE.int
) { _: DialogInterface?, indexSelected: Int ->
IntSetting.MAIN_IR_MODE.setInt(settings, indexSelected)
}
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
emulationFragment?.refreshOverlayPointer()
}
.setPositiveButton(R.string.ok, null)
.show()
}