summaryrefslogtreecommitdiff
path: root/src/android/app
diff options
context:
space:
mode:
authorGravatar Charles Lombardo2023-03-22 22:40:31 -0400
committerGravatar bunnei2023-06-03 00:05:47 -0700
commitaaefe8a0e0ad2b70cf6f027590421bd9e80c7333 (patch)
tree5de8db573294c2f697b31b8171c2a183a297c0f3 /src/android/app
parentandroid: Remove configChanges exceptions (diff)
downloadyuzu-aaefe8a0e0ad2b70cf6f027590421bd9e80c7333.tar.gz
yuzu-aaefe8a0e0ad2b70cf6f027590421bd9e80c7333.tar.xz
yuzu-aaefe8a0e0ad2b70cf6f027590421bd9e80c7333.zip
android: Store settings object in viewmodel
Diffstat (limited to 'src/android/app')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt7
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt34
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt20
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt17
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt11
7 files changed, 45 insertions, 57 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt
new file mode 100644
index 000000000..0e33a85bb
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt
@@ -0,0 +1,7 @@
1package org.yuzu.yuzu_emu.features.settings.model
2
3import androidx.lifecycle.ViewModel
4
5class SettingsViewModel : ViewModel() {
6 var settings = Settings()
7}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
index fca2f2155..1683f511f 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
@@ -10,6 +10,7 @@ import android.os.Bundle
10import android.view.Menu 10import android.view.Menu
11import android.view.View 11import android.view.View
12import android.widget.Toast 12import android.widget.Toast
13import androidx.activity.viewModels
13import androidx.appcompat.app.AlertDialog 14import androidx.appcompat.app.AlertDialog
14import androidx.appcompat.app.AppCompatActivity 15import androidx.appcompat.app.AppCompatActivity
15import androidx.core.view.ViewCompat 16import androidx.core.view.ViewCompat
@@ -23,7 +24,7 @@ import org.yuzu.yuzu_emu.R
23import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding 24import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding
24import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding 25import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
25import org.yuzu.yuzu_emu.features.settings.model.Settings 26import org.yuzu.yuzu_emu.features.settings.model.Settings
26import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragment.Companion.newInstance 27import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel
27import org.yuzu.yuzu_emu.utils.* 28import org.yuzu.yuzu_emu.utils.*
28 29
29class SettingsActivity : AppCompatActivity(), SettingsActivityView { 30class SettingsActivity : AppCompatActivity(), SettingsActivityView {
@@ -32,6 +33,14 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
32 33
33 private lateinit var binding: ActivitySettingsBinding 34 private lateinit var binding: ActivitySettingsBinding
34 35
36 private val settingsViewModel: SettingsViewModel by viewModels()
37
38 override var settings: Settings
39 get() = settingsViewModel.settings
40 set(settings) {
41 settingsViewModel.settings = settings
42 }
43
35 override fun onCreate(savedInstanceState: Bundle?) { 44 override fun onCreate(savedInstanceState: Bundle?) {
36 ThemeHelper.setTheme(this) 45 ThemeHelper.setTheme(this)
37 46
@@ -93,9 +102,10 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
93 } 102 }
94 103
95 override fun showSettingsFragment(menuTag: String, addToStack: Boolean, gameId: String) { 104 override fun showSettingsFragment(menuTag: String, addToStack: Boolean, gameId: String) {
96 if (!addToStack && fragment != null) { 105 if (!addToStack && settingsFragment != null) {
97 return 106 return
98 } 107 }
108
99 val transaction = supportFragmentManager.beginTransaction() 109 val transaction = supportFragmentManager.beginTransaction()
100 if (addToStack) { 110 if (addToStack) {
101 if (areSystemAnimationsEnabled()) { 111 if (areSystemAnimationsEnabled()) {
@@ -108,7 +118,11 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
108 } 118 }
109 transaction.addToBackStack(null) 119 transaction.addToBackStack(null)
110 } 120 }
111 transaction.replace(R.id.frame_content, newInstance(menuTag, gameId), FRAGMENT_TAG) 121 transaction.replace(
122 R.id.frame_content,
123 SettingsFragment.newInstance(menuTag, gameId),
124 FRAGMENT_TAG
125 )
112 transaction.commit() 126 transaction.commit()
113 } 127 }
114 128
@@ -165,19 +179,13 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
165 ).show() 179 ).show()
166 } 180 }
167 181
168 override var settings: Settings? 182 override fun onSettingsFileLoaded(settings: Settings) {
169 get() = presenter.settings 183 val fragment: SettingsFragmentView? = settingsFragment
170 set(settings) {
171 presenter.settings = settings
172 }
173
174 override fun onSettingsFileLoaded(settings: Settings?) {
175 val fragment: SettingsFragmentView? = fragment
176 fragment?.onSettingsFileLoaded(settings) 184 fragment?.onSettingsFileLoaded(settings)
177 } 185 }
178 186
179 override fun onSettingsFileNotFound() { 187 override fun onSettingsFileNotFound() {
180 val fragment: SettingsFragmentView? = fragment 188 val fragment: SettingsFragmentView? = settingsFragment
181 fragment?.loadDefaultSettings() 189 fragment?.loadDefaultSettings()
182 } 190 }
183 191
@@ -193,7 +201,7 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
193 presenter.onSettingChanged() 201 presenter.onSettingChanged()
194 } 202 }
195 203
196 private val fragment: SettingsFragment? 204 private val settingsFragment: SettingsFragment?
197 get() = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG) as SettingsFragment? 205 get() = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG) as SettingsFragment?
198 206
199 private fun setInsets() { 207 private fun setInsets() {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt
index fd7af5a56..60df9d5b5 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt
@@ -16,17 +16,17 @@ import org.yuzu.yuzu_emu.utils.Log
16import java.io.File 16import java.io.File
17 17
18class SettingsActivityPresenter(private val activityView: SettingsActivityView) { 18class SettingsActivityPresenter(private val activityView: SettingsActivityView) {
19 var settings: Settings? = Settings() 19 val settings: Settings get() = activityView.settings
20
20 private var shouldSave = false 21 private var shouldSave = false
21 private var directoryStateReceiver: DirectoryStateReceiver? = null 22 private var directoryStateReceiver: DirectoryStateReceiver? = null
22 private lateinit var menuTag: String 23 private lateinit var menuTag: String
23 private lateinit var gameId: String 24 private lateinit var gameId: String
24 25
25 fun onCreate(savedInstanceState: Bundle?, menuTag: String, gameId: String) { 26 fun onCreate(savedInstanceState: Bundle?, menuTag: String, gameId: String) {
26 if (savedInstanceState == null) { 27 this.menuTag = menuTag
27 this.menuTag = menuTag 28 this.gameId = gameId
28 this.gameId = gameId 29 if (savedInstanceState != null) {
29 } else {
30 shouldSave = savedInstanceState.getBoolean(KEY_SHOULD_SAVE) 30 shouldSave = savedInstanceState.getBoolean(KEY_SHOULD_SAVE)
31 } 31 }
32 } 32 }
@@ -36,11 +36,11 @@ class SettingsActivityPresenter(private val activityView: SettingsActivityView)
36 } 36 }
37 37
38 private fun loadSettingsUI() { 38 private fun loadSettingsUI() {
39 if (settings!!.isEmpty) { 39 if (settings.isEmpty) {
40 if (!TextUtils.isEmpty(gameId)) { 40 if (!TextUtils.isEmpty(gameId)) {
41 settings!!.loadSettings(gameId, activityView) 41 settings.loadSettings(gameId, activityView)
42 } else { 42 } else {
43 settings!!.loadSettings(activityView) 43 settings.loadSettings(activityView)
44 } 44 }
45 } 45 }
46 activityView.showSettingsFragment(menuTag, false, gameId) 46 activityView.showSettingsFragment(menuTag, false, gameId)
@@ -81,9 +81,9 @@ class SettingsActivityPresenter(private val activityView: SettingsActivityView)
81 activityView.stopListeningToDirectoryInitializationService(directoryStateReceiver!!) 81 activityView.stopListeningToDirectoryInitializationService(directoryStateReceiver!!)
82 directoryStateReceiver = null 82 directoryStateReceiver = null
83 } 83 }
84 if (settings != null && finishing && shouldSave) { 84 if (finishing && shouldSave) {
85 Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...") 85 Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...")
86 settings!!.saveSettings(activityView) 86 settings.saveSettings(activityView)
87 } 87 }
88 NativeLibrary.ReloadSettings() 88 NativeLibrary.ReloadSettings()
89 } 89 }
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt
index 2b0852cf6..f19ca0e30 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt
@@ -26,14 +26,14 @@ interface SettingsActivityView {
26 * 26 *
27 * @return A possibly null HashMap of Settings. 27 * @return A possibly null HashMap of Settings.
28 */ 28 */
29 var settings: Settings? 29 var settings: Settings
30 30
31 /** 31 /**
32 * Called when an asynchronous load operation completes. 32 * Called when an asynchronous load operation completes.
33 * 33 *
34 * @param settings The (possibly null) result of the ini load operation. 34 * @param settings The (possibly null) result of the ini load operation.
35 */ 35 */
36 fun onSettingsFileLoaded(settings: Settings?) 36 fun onSettingsFileLoaded(settings: Settings)
37 37
38 /** 38 /**
39 * Called when an asynchronous load operation fails. 39 * Called when an asynchronous load operation fails.
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
index e2e07ee8b..f522a82b7 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
@@ -34,7 +34,6 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
34 super.onAttach(context) 34 super.onAttach(context)
35 activityView = context as SettingsActivityView 35 activityView = context as SettingsActivityView
36 fragmentActivity = requireActivity() 36 fragmentActivity = requireActivity()
37 presenter.onAttach()
38 } 37 }
39 38
40 override fun onCreate(savedInstanceState: Bundle?) { 39 override fun onCreate(savedInstanceState: Bundle?) {
@@ -76,16 +75,10 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
76 } 75 }
77 } 76 }
78 77
79 override fun onSettingsFileLoaded(settings: Settings?) { 78 override fun onSettingsFileLoaded(settings: Settings) {
80 presenter.setSettings(settings) 79 presenter.setSettings(settings)
81 } 80 }
82 81
83 override fun passSettingsToActivity(settings: Settings) {
84 if (activityView != null) {
85 activityView!!.settings = settings
86 }
87 }
88
89 override fun showSettingsList(settingsList: ArrayList<SettingsItem>) { 82 override fun showSettingsList(settingsList: ArrayList<SettingsItem>) {
90 settingsAdapter!!.setSettings(settingsList) 83 settingsAdapter!!.setSettings(settingsList)
91 } 84 }
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index ef825ec58..8eaa0a0fa 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -22,21 +22,10 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
22 this.menuTag = menuTag 22 this.menuTag = menuTag
23 } 23 }
24 24
25 fun onViewCreated(settings: Settings?) { 25 fun onViewCreated(settings: Settings) {
26 setSettings(settings) 26 setSettings(settings)
27 } 27 }
28 28
29 /**
30 * If the screen is rotated, the Activity will forget the settings map. This fragment
31 * won't, though; so rather than have the Activity reload from disk, have the fragment pass
32 * the settings map back to the Activity.
33 */
34 fun onAttach() {
35 if (settings != null) {
36 fragmentView.passSettingsToActivity(settings!!)
37 }
38 }
39
40 fun putSetting(setting: Setting) { 29 fun putSetting(setting: Setting) {
41 settings!!.getSection(setting.section)!!.putSetting(setting) 30 settings!!.getSection(setting.section)!!.putSetting(setting)
42 } 31 }
@@ -54,8 +43,8 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
54 loadSettingsList() 43 loadSettingsList()
55 } 44 }
56 45
57 fun setSettings(settings: Settings?) { 46 fun setSettings(settings: Settings) {
58 if (settingsList == null && settings != null) { 47 if (settingsList == null) {
59 this.settings = settings 48 this.settings = settings
60 loadSettingsList() 49 loadSettingsList()
61 } else { 50 } else {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt
index 1b8eddfbb..2d9700fca 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt
@@ -19,16 +19,7 @@ interface SettingsFragmentView {
19 * 19 *
20 * @param settings The (possibly null) result of the ini load operation. 20 * @param settings The (possibly null) result of the ini load operation.
21 */ 21 */
22 fun onSettingsFileLoaded(settings: Settings?) 22 fun onSettingsFileLoaded(settings: Settings)
23
24 /**
25 * Pass a settings HashMap to the containing activity, so that it can
26 * share the HashMap with other SettingsFragments; useful so that rotations
27 * do not require an additional load operation.
28 *
29 * @param settings An ArrayList containing all the settings HashMaps.
30 */
31 fun passSettingsToActivity(settings: Settings)
32 23
33 /** 24 /**
34 * Pass an ArrayList to the View so that it can be displayed on screen. 25 * Pass an ArrayList to the View so that it can be displayed on screen.