Android: Save settings instantly after edits

This commit is contained in:
Simonx22 2025-10-29 16:49:16 -04:00
parent b920182c97
commit 82c86221d6
7 changed files with 10 additions and 38 deletions

View File

@ -222,7 +222,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider {
override fun onStop() {
super.onStop()
settings.saveSettings(null)
settings.saveSettings()
}
fun onTitleChanged() {

View File

@ -93,7 +93,7 @@ public class GamePropertiesDialog extends DialogFragment
{
settings.loadSettings();
StringSetting.MAIN_DEFAULT_ISO.setString(settings, path);
settings.saveSettings(getContext());
settings.saveSettings();
}
});
}

View File

@ -2,11 +2,8 @@
package org.dolphinemu.dolphinemu.features.settings.model
import android.content.Context
import android.text.TextUtils
import android.widget.Toast
import org.dolphinemu.dolphinemu.NativeLibrary
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.features.input.model.MappingCommon
import java.io.Closeable
@ -52,14 +49,8 @@ class Settings : Closeable {
loadSettings(isWii)
}
fun saveSettings(context: Context?) {
fun saveSettings() {
if (!isGameSpecific) {
if (context != null) Toast.makeText(
context,
R.string.settings_saved,
Toast.LENGTH_SHORT
).show()
MappingCommon.save()
NativeConfig.save(NativeConfig.LAYER_BASE)
@ -67,13 +58,6 @@ class Settings : Closeable {
NativeLibrary.ReloadLoggerConfig()
NativeLibrary.UpdateGCAdapterScanThread()
} else {
// custom game settings
if (context != null) {
Toast.makeText(
context, context.getString(R.string.settings_saved_game_specific, gameId),
Toast.LENGTH_SHORT
).show()
}
NativeConfig.save(NativeConfig.LAYER_LOCAL_GAME)
}
}

View File

@ -98,7 +98,6 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
override fun onSaveInstanceState(outState: Bundle) {
// Critical: If super method is not called, rotations will be busted.
super.onSaveInstanceState(outState)
presenter!!.saveState(outState)
outState.putBoolean(KEY_MAPPING_ALL_DEVICES, isMappingAllDevices)
}

View File

@ -13,7 +13,6 @@ class SettingsActivityPresenter(
private val activityView: SettingsActivityView,
var settings: Settings?
) {
private var shouldSave = false
private var menuTag: MenuTag? = null
private var gameId: String? = null
private var revision = 0
@ -33,7 +32,6 @@ class SettingsActivityPresenter(
this.revision = revision
this.isWii = isWii
this.activity = activity
shouldSave = savedInstanceState != null && savedInstanceState.getBoolean(KEY_SHOULD_SAVE)
}
fun onDestroy() {
@ -74,18 +72,16 @@ class SettingsActivityPresenter(
}
fun onStop(finishing: Boolean) {
if (settings != null && finishing && shouldSave) {
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...")
settings!!.saveSettings(activity)
if (settings != null && finishing && settings!!.areSettingsLoaded()) {
Log.debug("[SettingsActivity] Settings activity stopping. Ensuring settings are saved.")
settings!!.saveSettings()
}
}
fun onSettingChanged() {
shouldSave = true
if (settings != null && settings!!.areSettingsLoaded()) {
settings!!.saveSettings()
}
fun saveState(outState: Bundle) {
outState.putBoolean(KEY_SHOULD_SAVE, shouldSave)
}
fun onMenuTagAction(menuTag: MenuTag, value: Int) {
@ -140,8 +136,4 @@ class SettingsActivityPresenter(
value != 0
} else false
}
companion object {
private const val KEY_SHOULD_SAVE = "should_save"
}
}

View File

@ -33,8 +33,7 @@ object Analytics {
BooleanSetting.MAIN_ANALYTICS_ENABLED.setBoolean(settings, enabled)
BooleanSetting.MAIN_ANALYTICS_PERMISSION_ASKED.setBoolean(settings, true)
// Context is set to null to avoid toasts
settings.saveSettings(null)
settings.saveSettings()
}
}

View File

@ -67,8 +67,6 @@
<string name="graphics_settings">Graphics Settings</string>
<string name="gcpad_settings">GameCube Input</string>
<string name="wiimote_settings">Wii Input</string>
<string name="settings_saved">Saved settings to INI files</string>
<string name="settings_saved_game_specific">Saved settings for %1$s</string>
<!-- General Preference Fragment -->
<string name="general_submenu">General</string>