From 0078f972279a11507847c8c9f01439845951956b Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Sun, 4 Jun 2023 19:32:28 -0400 Subject: [PATCH] android: Load settings at the start of each activity --- .../org/yuzu/yuzu_emu/activities/EmulationActivity.kt | 6 ++++++ .../yuzu/yuzu_emu/features/settings/model/Settings.kt | 6 +++--- .../yuzu_emu/features/settings/utils/SettingsFile.kt | 9 ++++++--- .../main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | 4 ++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt index 901a3978d8..94d5156cfe 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt @@ -21,6 +21,7 @@ import android.view.MotionEvent import android.view.Surface import android.view.View import android.view.inputmethod.InputMethodManager +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.content.getSystemService import androidx.core.view.WindowCompat @@ -34,6 +35,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel import org.yuzu.yuzu_emu.fragments.EmulationFragment import org.yuzu.yuzu_emu.model.Game import org.yuzu.yuzu_emu.utils.ControllerMappingHelper @@ -60,6 +62,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { private lateinit var game: Game + private val settingsViewModel: SettingsViewModel by viewModels() + override fun onDestroy() { stopForegroundService(this) super.onDestroy() @@ -68,6 +72,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { override fun onCreate(savedInstanceState: Bundle?) { ThemeHelper.setTheme(this) + settingsViewModel.settings.loadSettings() + super.onCreate(savedInstanceState) if (savedInstanceState == null) { // Get params we were passed 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 23c31e13ab..6d3db53c0a 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 @@ -39,7 +39,7 @@ class Settings { val isEmpty: Boolean get() = sections.isEmpty() - fun loadSettings(view: SettingsActivityView) { + fun loadSettings(view: SettingsActivityView? = null) { sections = SettingsSectionMap() loadYuzuSettings(view) if (!TextUtils.isEmpty(gameId)) { @@ -48,13 +48,13 @@ class Settings { isLoaded = true } - private fun loadYuzuSettings(view: SettingsActivityView) { + private fun loadYuzuSettings(view: SettingsActivityView?) { for ((fileName) in configFileSectionsMap) { sections.putAll(SettingsFile.readFile(fileName, view)) } } - private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView) { + private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView?) { // Custom game settings mergeSections(SettingsFile.readCustomGameSettings(gameId, view)) } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt index c502fdca0f..e29bca11df 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt @@ -37,7 +37,7 @@ object SettingsFile { private fun readFile( ini: File?, isCustomGame: Boolean, - view: SettingsActivityView? + view: SettingsActivityView? = null ): HashMap { val sections: HashMap = SettingsSectionMap() var reader: BufferedReader? = null @@ -74,10 +74,13 @@ object SettingsFile { return sections } - fun readFile(fileName: String, view: SettingsActivityView): HashMap { + fun readFile(fileName: String, view: SettingsActivityView?): HashMap { return readFile(getSettingsFile(fileName), false, view) } + fun readFile(fileName: String): HashMap = + readFile(getSettingsFile(fileName), false) + /** * Reads a given .ini file from disk and returns it as a HashMap of SettingSections, themselves * effectively a HashMap of key/value settings. If unsuccessful, outputs an error telling why it @@ -88,7 +91,7 @@ object SettingsFile { */ fun readCustomGameSettings( gameId: String, - view: SettingsActivityView + view: SettingsActivityView? ): HashMap { return readFile(getCustomGameSettingsFile(gameId), true, view) } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index f8bca11bb6..1340852104 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt @@ -35,6 +35,7 @@ import org.yuzu.yuzu_emu.activities.EmulationActivity import org.yuzu.yuzu_emu.databinding.ActivityMainBinding import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding import org.yuzu.yuzu_emu.features.settings.model.Settings +import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.fragments.MessageDialogFragment @@ -48,6 +49,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { private val homeViewModel: HomeViewModel by viewModels() private val gamesViewModel: GamesViewModel by viewModels() + private val settingsViewModel: SettingsViewModel by viewModels() override var themeId: Int = 0 @@ -55,6 +57,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider { val splashScreen = installSplashScreen() splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady } + settingsViewModel.settings.loadSettings() + ThemeHelper.setTheme(this) super.onCreate(savedInstanceState)