summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2023-06-04 19:14:38 -0700
committerGravatar GitHub2023-06-04 19:14:38 -0700
commit78319435e6c9b8455353547e6bed0a401bad5f8c (patch)
tree89c51906428019a4898163f555e92da91bfa24bf
parentMerge pull request #10605 from 8bitDream/kotlin (diff)
parentandroid: Load settings at the start of each activity (diff)
downloadyuzu-78319435e6c9b8455353547e6bed0a401bad5f8c.tar.gz
yuzu-78319435e6c9b8455353547e6bed0a401bad5f8c.tar.xz
yuzu-78319435e6c9b8455353547e6bed0a401bad5f8c.zip
Merge pull request #10622 from t895/load-settings
android: Load settings at the start of each activity
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt4
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 901a3978d..94d5156cf 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
21import android.view.Surface 21import android.view.Surface
22import android.view.View 22import android.view.View
23import android.view.inputmethod.InputMethodManager 23import android.view.inputmethod.InputMethodManager
24import androidx.activity.viewModels
24import androidx.appcompat.app.AppCompatActivity 25import androidx.appcompat.app.AppCompatActivity
25import androidx.core.content.getSystemService 26import androidx.core.content.getSystemService
26import androidx.core.view.WindowCompat 27import androidx.core.view.WindowCompat
@@ -34,6 +35,7 @@ import kotlinx.coroutines.Dispatchers
34import kotlinx.coroutines.launch 35import kotlinx.coroutines.launch
35import org.yuzu.yuzu_emu.NativeLibrary 36import org.yuzu.yuzu_emu.NativeLibrary
36import org.yuzu.yuzu_emu.R 37import org.yuzu.yuzu_emu.R
38import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel
37import org.yuzu.yuzu_emu.fragments.EmulationFragment 39import org.yuzu.yuzu_emu.fragments.EmulationFragment
38import org.yuzu.yuzu_emu.model.Game 40import org.yuzu.yuzu_emu.model.Game
39import org.yuzu.yuzu_emu.utils.ControllerMappingHelper 41import org.yuzu.yuzu_emu.utils.ControllerMappingHelper
@@ -60,6 +62,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
60 62
61 private lateinit var game: Game 63 private lateinit var game: Game
62 64
65 private val settingsViewModel: SettingsViewModel by viewModels()
66
63 override fun onDestroy() { 67 override fun onDestroy() {
64 stopForegroundService(this) 68 stopForegroundService(this)
65 super.onDestroy() 69 super.onDestroy()
@@ -68,6 +72,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
68 override fun onCreate(savedInstanceState: Bundle?) { 72 override fun onCreate(savedInstanceState: Bundle?) {
69 ThemeHelper.setTheme(this) 73 ThemeHelper.setTheme(this)
70 74
75 settingsViewModel.settings.loadSettings()
76
71 super.onCreate(savedInstanceState) 77 super.onCreate(savedInstanceState)
72 if (savedInstanceState == null) { 78 if (savedInstanceState == null) {
73 // Get params we were passed 79 // 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 23c31e13a..6d3db53c0 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 {
39 val isEmpty: Boolean 39 val isEmpty: Boolean
40 get() = sections.isEmpty() 40 get() = sections.isEmpty()
41 41
42 fun loadSettings(view: SettingsActivityView) { 42 fun loadSettings(view: SettingsActivityView? = null) {
43 sections = SettingsSectionMap() 43 sections = SettingsSectionMap()
44 loadYuzuSettings(view) 44 loadYuzuSettings(view)
45 if (!TextUtils.isEmpty(gameId)) { 45 if (!TextUtils.isEmpty(gameId)) {
@@ -48,13 +48,13 @@ class Settings {
48 isLoaded = true 48 isLoaded = true
49 } 49 }
50 50
51 private fun loadYuzuSettings(view: SettingsActivityView) { 51 private fun loadYuzuSettings(view: SettingsActivityView?) {
52 for ((fileName) in configFileSectionsMap) { 52 for ((fileName) in configFileSectionsMap) {
53 sections.putAll(SettingsFile.readFile(fileName, view)) 53 sections.putAll(SettingsFile.readFile(fileName, view))
54 } 54 }
55 } 55 }
56 56
57 private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView) { 57 private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView?) {
58 // Custom game settings 58 // Custom game settings
59 mergeSections(SettingsFile.readCustomGameSettings(gameId, view)) 59 mergeSections(SettingsFile.readCustomGameSettings(gameId, view))
60 } 60 }
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 c502fdca0..e29bca11d 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 {
37 private fun readFile( 37 private fun readFile(
38 ini: File?, 38 ini: File?,
39 isCustomGame: Boolean, 39 isCustomGame: Boolean,
40 view: SettingsActivityView? 40 view: SettingsActivityView? = null
41 ): HashMap<String, SettingSection?> { 41 ): HashMap<String, SettingSection?> {
42 val sections: HashMap<String, SettingSection?> = SettingsSectionMap() 42 val sections: HashMap<String, SettingSection?> = SettingsSectionMap()
43 var reader: BufferedReader? = null 43 var reader: BufferedReader? = null
@@ -74,10 +74,13 @@ object SettingsFile {
74 return sections 74 return sections
75 } 75 }
76 76
77 fun readFile(fileName: String, view: SettingsActivityView): HashMap<String, SettingSection?> { 77 fun readFile(fileName: String, view: SettingsActivityView?): HashMap<String, SettingSection?> {
78 return readFile(getSettingsFile(fileName), false, view) 78 return readFile(getSettingsFile(fileName), false, view)
79 } 79 }
80 80
81 fun readFile(fileName: String): HashMap<String, SettingSection?> =
82 readFile(getSettingsFile(fileName), false)
83
81 /** 84 /**
82 * Reads a given .ini file from disk and returns it as a HashMap of SettingSections, themselves 85 * Reads a given .ini file from disk and returns it as a HashMap of SettingSections, themselves
83 * effectively a HashMap of key/value settings. If unsuccessful, outputs an error telling why it 86 * effectively a HashMap of key/value settings. If unsuccessful, outputs an error telling why it
@@ -88,7 +91,7 @@ object SettingsFile {
88 */ 91 */
89 fun readCustomGameSettings( 92 fun readCustomGameSettings(
90 gameId: String, 93 gameId: String,
91 view: SettingsActivityView 94 view: SettingsActivityView?
92 ): HashMap<String, SettingSection?> { 95 ): HashMap<String, SettingSection?> {
93 return readFile(getCustomGameSettingsFile(gameId), true, view) 96 return readFile(getCustomGameSettingsFile(gameId), true, view)
94 } 97 }
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 f8bca11bb..134085210 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
35import org.yuzu.yuzu_emu.databinding.ActivityMainBinding 35import org.yuzu.yuzu_emu.databinding.ActivityMainBinding
36import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding 36import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
37import org.yuzu.yuzu_emu.features.settings.model.Settings 37import org.yuzu.yuzu_emu.features.settings.model.Settings
38import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel
38import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity 39import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity
39import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile 40import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
40import org.yuzu.yuzu_emu.fragments.MessageDialogFragment 41import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
@@ -48,6 +49,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
48 49
49 private val homeViewModel: HomeViewModel by viewModels() 50 private val homeViewModel: HomeViewModel by viewModels()
50 private val gamesViewModel: GamesViewModel by viewModels() 51 private val gamesViewModel: GamesViewModel by viewModels()
52 private val settingsViewModel: SettingsViewModel by viewModels()
51 53
52 override var themeId: Int = 0 54 override var themeId: Int = 0
53 55
@@ -55,6 +57,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
55 val splashScreen = installSplashScreen() 57 val splashScreen = installSplashScreen()
56 splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady } 58 splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady }
57 59
60 settingsViewModel.settings.loadSettings()
61
58 ThemeHelper.setTheme(this) 62 ThemeHelper.setTheme(this)
59 63
60 super.onCreate(savedInstanceState) 64 super.onCreate(savedInstanceState)