From 82c86221d602fda2f09a26fdcc77d250fbe5db7e Mon Sep 17 00:00:00 2001 From: Simonx22 Date: Wed, 29 Oct 2025 16:49:16 -0400 Subject: [PATCH] Android: Save settings instantly after edits --- .../activities/EmulationActivity.kt | 2 +- .../dialogs/GamePropertiesDialog.java | 2 +- .../features/settings/model/Settings.kt | 18 +---------------- .../features/settings/ui/SettingsActivity.kt | 1 - .../settings/ui/SettingsActivityPresenter.kt | 20 ++++++------------- .../dolphinemu/dolphinemu/utils/Analytics.kt | 3 +-- .../app/src/main/res/values/strings.xml | 2 -- 7 files changed, 10 insertions(+), 38 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt index b7433289209..5e6c8af9e95 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt @@ -222,7 +222,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider { override fun onStop() { super.onStop() - settings.saveSettings(null) + settings.saveSettings() } fun onTitleChanged() { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java index 43df92b3a1d..e041718d35a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java @@ -93,7 +93,7 @@ public class GamePropertiesDialog extends DialogFragment { settings.loadSettings(); StringSetting.MAIN_DEFAULT_ISO.setString(settings, path); - settings.saveSettings(getContext()); + settings.saveSettings(); } }); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt index cd5bdb51eb1..32ad11b3e1f 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt @@ -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) } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt index e5db2f63d2e..316a6e97985 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt @@ -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) } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt index eee800463bf..7627a7b5c63 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt @@ -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 - } - - fun saveState(outState: Bundle) { - outState.putBoolean(KEY_SHOULD_SAVE, shouldSave) + if (settings != null && settings!!.areSettingsLoaded()) { + settings!!.saveSettings() + } } 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" - } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.kt index 5f3d2fc3cb6..c265db5945f 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.kt @@ -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() } } diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 51406cd7e3e..1971a1535eb 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -67,8 +67,6 @@ Graphics Settings GameCube Input Wii Input - Saved settings to INI files - Saved settings for %1$s General