summaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorGravatar Charles Lombardo2023-03-23 03:46:04 -0400
committerGravatar bunnei2023-06-03 00:05:47 -0700
commit295ffd4d478e93cc1e0c4937403e47e44298beda (patch)
tree0c5175e5c26229e4d8297c78336fa27b1d9e9443 /src/android
parentandroid: Store settings object in viewmodel (diff)
downloadyuzu-295ffd4d478e93cc1e0c4937403e47e44298beda.tar.gz
yuzu-295ffd4d478e93cc1e0c4937403e47e44298beda.tar.xz
yuzu-295ffd4d478e93cc1e0c4937403e47e44298beda.zip
android: Persist settings across configuration changes
Mostly things get refactored here to remove previous assumptions made about how the activity/fragment lifecycles would operate. The important change for persistence is removing the assumption that the user will be at the first settings fragment on recreation when deciding whether or not to reload settings. Now we check a flag in Settings to know if we loaded the settings within this lifecycle.
Diffstat (limited to 'src/android')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt3
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.kt12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt26
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt59
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.kt17
9 files changed, 51 insertions, 93 deletions
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 b59815770..bbe0097d6 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
@@ -13,6 +13,8 @@ import java.util.*
13class Settings { 13class Settings {
14 private var gameId: String? = null 14 private var gameId: String? = null
15 15
16 var isLoaded = false
17
16 /** 18 /**
17 * A HashMap<String></String>, SettingSection> that constructs a new SettingSection instead of returning null 19 * A HashMap<String></String>, SettingSection> that constructs a new SettingSection instead of returning null
18 * when getting a key not already in the map 20 * when getting a key not already in the map
@@ -43,6 +45,7 @@ class Settings {
43 if (!TextUtils.isEmpty(gameId)) { 45 if (!TextUtils.isEmpty(gameId)) {
44 loadCustomGameSettings(gameId!!, view) 46 loadCustomGameSettings(gameId!!, view)
45 } 47 }
48 isLoaded = true
46 } 49 }
47 50
48 private fun loadYuzuSettings(view: SettingsActivityView) { 51 private fun loadYuzuSettings(view: SettingsActivityView) {
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
index 0e33a85bb..7141604d5 100644
--- 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
@@ -3,5 +3,5 @@ package org.yuzu.yuzu_emu.features.settings.model
3import androidx.lifecycle.ViewModel 3import androidx.lifecycle.ViewModel
4 4
5class SettingsViewModel : ViewModel() { 5class SettingsViewModel : ViewModel() {
6 var settings = Settings() 6 val settings = Settings()
7} 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 1683f511f..60858ecd6 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
@@ -35,11 +35,7 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
35 35
36 private val settingsViewModel: SettingsViewModel by viewModels() 36 private val settingsViewModel: SettingsViewModel by viewModels()
37 37
38 override var settings: Settings 38 override val settings: Settings get() = settingsViewModel.settings
39 get() = settingsViewModel.settings
40 set(settings) {
41 settingsViewModel.settings = settings
42 }
43 39
44 override fun onCreate(savedInstanceState: Bundle?) { 40 override fun onCreate(savedInstanceState: Bundle?) {
45 ThemeHelper.setTheme(this) 41 ThemeHelper.setTheme(this)
@@ -179,14 +175,14 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
179 ).show() 175 ).show()
180 } 176 }
181 177
182 override fun onSettingsFileLoaded(settings: Settings) { 178 override fun onSettingsFileLoaded() {
183 val fragment: SettingsFragmentView? = settingsFragment 179 val fragment: SettingsFragmentView? = settingsFragment
184 fragment?.onSettingsFileLoaded(settings) 180 fragment?.loadSettingsList()
185 } 181 }
186 182
187 override fun onSettingsFileNotFound() { 183 override fun onSettingsFileNotFound() {
188 val fragment: SettingsFragmentView? = settingsFragment 184 val fragment: SettingsFragmentView? = settingsFragment
189 fragment?.loadDefaultSettings() 185 fragment?.loadSettingsList()
190 } 186 }
191 187
192 override fun showToastMessage(message: String, is_long: Boolean) { 188 override fun showToastMessage(message: String, is_long: Boolean) {
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 60df9d5b5..2a86e4463 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
@@ -36,7 +36,7 @@ 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.isLoaded) {
40 if (!TextUtils.isEmpty(gameId)) { 40 if (!TextUtils.isEmpty(gameId)) {
41 settings.loadSettings(gameId, activityView) 41 settings.loadSettings(gameId, activityView)
42 } else { 42 } else {
@@ -44,7 +44,7 @@ class SettingsActivityPresenter(private val activityView: SettingsActivityView)
44 } 44 }
45 } 45 }
46 activityView.showSettingsFragment(menuTag, false, gameId) 46 activityView.showSettingsFragment(menuTag, false, gameId)
47 activityView.onSettingsFileLoaded(settings) 47 activityView.onSettingsFileLoaded()
48 } 48 }
49 49
50 private fun prepareDirectoriesIfNeeded() { 50 private fun prepareDirectoriesIfNeeded() {
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 f19ca0e30..2b6dd2fce 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
@@ -24,19 +24,17 @@ interface SettingsActivityView {
24 * loaded from disk, so that each Fragment doesn't need to perform its own 24 * loaded from disk, so that each Fragment doesn't need to perform its own
25 * read operation. 25 * read operation.
26 * 26 *
27 * @return A possibly null HashMap of Settings. 27 * @return A HashMap of Settings.
28 */ 28 */
29 var settings: Settings 29 val settings: Settings
30 30
31 /** 31 /**
32 * Called when an asynchronous load operation completes. 32 * Called when a load operation completes.
33 *
34 * @param settings The (possibly null) result of the ini load operation.
35 */ 33 */
36 fun onSettingsFileLoaded(settings: Settings) 34 fun onSettingsFileLoaded()
37 35
38 /** 36 /**
39 * Called when an asynchronous load operation fails. 37 * Called when a load operation fails.
40 */ 38 */
41 fun onSettingsFileNotFound() 39 fun onSettingsFileNotFound()
42 40
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt
index 1f81f6e62..cdbdc78a0 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt
@@ -12,6 +12,7 @@ import android.view.LayoutInflater
12import android.view.ViewGroup 12import android.view.ViewGroup
13import android.widget.TextView 13import android.widget.TextView
14import androidx.appcompat.app.AlertDialog 14import androidx.appcompat.app.AlertDialog
15import androidx.appcompat.app.AppCompatActivity
15import androidx.recyclerview.widget.RecyclerView 16import androidx.recyclerview.widget.RecyclerView
16import com.google.android.material.datepicker.MaterialDatePicker 17import com.google.android.material.datepicker.MaterialDatePicker
17import com.google.android.material.dialog.MaterialAlertDialogBuilder 18import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -93,7 +94,7 @@ class SettingsAdapter(
93 return getItem(position).type 94 return getItem(position).type
94 } 95 }
95 96
96 fun setSettings(settings: ArrayList<SettingsItem>?) { 97 fun setSettingsList(settings: ArrayList<SettingsItem>?) {
97 this.settings = settings 98 this.settings = settings
98 notifyDataSetChanged() 99 notifyDataSetChanged()
99 } 100 }
@@ -144,7 +145,7 @@ class SettingsAdapter(
144 calendar.timeZone = TimeZone.getTimeZone("UTC") 145 calendar.timeZone = TimeZone.getTimeZone("UTC")
145 146
146 var timeFormat: Int = TimeFormat.CLOCK_12H 147 var timeFormat: Int = TimeFormat.CLOCK_12H
147 if (DateFormat.is24HourFormat(fragmentView.fragmentActivity)) { 148 if (DateFormat.is24HourFormat(fragmentView.activityView as AppCompatActivity)) {
148 timeFormat = TimeFormat.CLOCK_24H 149 timeFormat = TimeFormat.CLOCK_24H
149 } 150 }
150 151
@@ -161,7 +162,7 @@ class SettingsAdapter(
161 162
162 datePicker.addOnPositiveButtonClickListener { 163 datePicker.addOnPositiveButtonClickListener {
163 timePicker.show( 164 timePicker.show(
164 fragmentView.fragmentActivity.supportFragmentManager, 165 (fragmentView.activityView as AppCompatActivity).supportFragmentManager,
165 "TimePicker" 166 "TimePicker"
166 ) 167 )
167 } 168 }
@@ -177,7 +178,7 @@ class SettingsAdapter(
177 item.setSelectedValue(rtcString) 178 item.setSelectedValue(rtcString)
178 clickedItem = null 179 clickedItem = null
179 } 180 }
180 datePicker.show(fragmentView.fragmentActivity.supportFragmentManager, "DatePicker") 181 datePicker.show((fragmentView.activityView as AppCompatActivity).supportFragmentManager, "DatePicker")
181 } 182 }
182 183
183 fun onSliderClick(item: SliderSetting, position: Int) { 184 fun onSliderClick(item: SliderSetting, position: Int) {
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 f522a82b7..a9cfdc21f 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
@@ -12,7 +12,6 @@ import androidx.core.view.ViewCompat
12import androidx.core.view.WindowInsetsCompat 12import androidx.core.view.WindowInsetsCompat
13import androidx.core.view.updatePadding 13import androidx.core.view.updatePadding
14import androidx.fragment.app.Fragment 14import androidx.fragment.app.Fragment
15import androidx.fragment.app.FragmentActivity
16import androidx.recyclerview.widget.LinearLayoutManager 15import androidx.recyclerview.widget.LinearLayoutManager
17import com.google.android.material.divider.MaterialDividerItemDecoration 16import com.google.android.material.divider.MaterialDividerItemDecoration
18import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding 17import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding
@@ -21,10 +20,9 @@ import org.yuzu.yuzu_emu.features.settings.model.Settings
21import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem 20import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
22 21
23class SettingsFragment : Fragment(), SettingsFragmentView { 22class SettingsFragment : Fragment(), SettingsFragmentView {
24 override lateinit var fragmentActivity: FragmentActivity 23 override var activityView: SettingsActivityView? = null
25 24
26 private val presenter = SettingsFragmentPresenter(this) 25 private val fragmentPresenter = SettingsFragmentPresenter(this)
27 private var activityView: SettingsActivityView? = null
28 private var settingsAdapter: SettingsAdapter? = null 26 private var settingsAdapter: SettingsAdapter? = null
29 27
30 private var _binding: FragmentSettingsBinding? = null 28 private var _binding: FragmentSettingsBinding? = null
@@ -32,15 +30,14 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
32 30
33 override fun onAttach(context: Context) { 31 override fun onAttach(context: Context) {
34 super.onAttach(context) 32 super.onAttach(context)
35 activityView = context as SettingsActivityView 33 activityView = requireActivity() as SettingsActivityView
36 fragmentActivity = requireActivity()
37 } 34 }
38 35
39 override fun onCreate(savedInstanceState: Bundle?) { 36 override fun onCreate(savedInstanceState: Bundle?) {
40 super.onCreate(savedInstanceState) 37 super.onCreate(savedInstanceState)
41 val menuTag = requireArguments().getString(ARGUMENT_MENU_TAG) 38 val menuTag = requireArguments().getString(ARGUMENT_MENU_TAG)
42 val gameId = requireArguments().getString(ARGUMENT_GAME_ID) 39 val gameId = requireArguments().getString(ARGUMENT_GAME_ID)
43 presenter.onCreate(menuTag!!, gameId!!) 40 fragmentPresenter.onCreate(menuTag!!, gameId!!)
44 } 41 }
45 42
46 override fun onCreateView( 43 override fun onCreateView(
@@ -61,8 +58,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
61 layoutManager = LinearLayoutManager(activity) 58 layoutManager = LinearLayoutManager(activity)
62 addItemDecoration(dividerDecoration) 59 addItemDecoration(dividerDecoration)
63 } 60 }
64 val activity = activity as SettingsActivityView? 61 fragmentPresenter.onViewCreated()
65 presenter.onViewCreated(activity!!.settings)
66 62
67 setInsets() 63 setInsets()
68 } 64 }
@@ -75,16 +71,12 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
75 } 71 }
76 } 72 }
77 73
78 override fun onSettingsFileLoaded(settings: Settings) {
79 presenter.setSettings(settings)
80 }
81
82 override fun showSettingsList(settingsList: ArrayList<SettingsItem>) { 74 override fun showSettingsList(settingsList: ArrayList<SettingsItem>) {
83 settingsAdapter!!.setSettings(settingsList) 75 settingsAdapter!!.setSettingsList(settingsList)
84 } 76 }
85 77
86 override fun loadDefaultSettings() { 78 override fun loadSettingsList() {
87 presenter.loadDefaultSettings() 79 fragmentPresenter.loadSettingsList()
88 } 80 }
89 81
90 override fun loadSubMenu(menuKey: String) { 82 override fun loadSubMenu(menuKey: String) {
@@ -100,7 +92,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
100 } 92 }
101 93
102 override fun putSetting(setting: Setting) { 94 override fun putSetting(setting: Setting) {
103 presenter.putSetting(setting) 95 fragmentPresenter.putSetting(setting)
104 } 96 }
105 97
106 override fun onSettingChanged() { 98 override fun onSettingChanged() {
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 8eaa0a0fa..e2b1326f8 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
@@ -4,58 +4,37 @@
4package org.yuzu.yuzu_emu.features.settings.ui 4package org.yuzu.yuzu_emu.features.settings.ui
5 5
6import android.text.TextUtils 6import android.text.TextUtils
7import androidx.appcompat.app.AppCompatActivity
7import org.yuzu.yuzu_emu.R 8import org.yuzu.yuzu_emu.R
8import org.yuzu.yuzu_emu.features.settings.model.Setting 9import org.yuzu.yuzu_emu.features.settings.model.Setting
9import org.yuzu.yuzu_emu.features.settings.model.Settings 10import org.yuzu.yuzu_emu.features.settings.model.Settings
10import org.yuzu.yuzu_emu.features.settings.model.StringSetting
11import org.yuzu.yuzu_emu.features.settings.model.view.* 11import org.yuzu.yuzu_emu.features.settings.model.view.*
12import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile 12import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
13 13
14class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) { 14class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) {
15 private var menuTag: String? = null 15 private var menuTag: String? = null
16 private lateinit var gameId: String 16 private lateinit var gameId: String
17 private var settings: Settings? = null
18 private var settingsList: ArrayList<SettingsItem>? = null 17 private var settingsList: ArrayList<SettingsItem>? = null
19 18
19 private val settingsActivity get() = fragmentView.activityView as AppCompatActivity
20 private val settings get() = fragmentView.activityView!!.settings
21
20 fun onCreate(menuTag: String, gameId: String) { 22 fun onCreate(menuTag: String, gameId: String) {
21 this.gameId = gameId 23 this.gameId = gameId
22 this.menuTag = menuTag 24 this.menuTag = menuTag
23 } 25 }
24 26
25 fun onViewCreated(settings: Settings) { 27 fun onViewCreated() {
26 setSettings(settings)
27 }
28
29 fun putSetting(setting: Setting) {
30 settings!!.getSection(setting.section)!!.putSetting(setting)
31 }
32
33 private fun asStringSetting(setting: Setting?): StringSetting? {
34 if (setting == null) {
35 return null
36 }
37 val stringSetting = StringSetting(setting.key, setting.section, setting.valueAsString)
38 putSetting(stringSetting)
39 return stringSetting
40 }
41
42 fun loadDefaultSettings() {
43 loadSettingsList() 28 loadSettingsList()
44 } 29 }
45 30
46 fun setSettings(settings: Settings) { 31 fun putSetting(setting: Setting) {
47 if (settingsList == null) { 32 settings.getSection(setting.section)!!.putSetting(setting)
48 this.settings = settings
49 loadSettingsList()
50 } else {
51 fragmentView.fragmentActivity.setTitle(R.string.preferences_settings)
52 fragmentView.showSettingsList(settingsList!!)
53 }
54 } 33 }
55 34
56 private fun loadSettingsList() { 35 fun loadSettingsList() {
57 if (!TextUtils.isEmpty(gameId)) { 36 if (!TextUtils.isEmpty(gameId)) {
58 fragmentView.fragmentActivity.title = "Game Settings: $gameId" 37 settingsActivity.title = "Game Settings: $gameId"
59 } 38 }
60 val sl = ArrayList<SettingsItem>() 39 val sl = ArrayList<SettingsItem>()
61 if (menuTag == null) { 40 if (menuTag == null) {
@@ -77,7 +56,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
77 } 56 }
78 57
79 private fun addConfigSettings(sl: ArrayList<SettingsItem>) { 58 private fun addConfigSettings(sl: ArrayList<SettingsItem>) {
80 fragmentView.fragmentActivity.setTitle(R.string.preferences_settings) 59 settingsActivity.setTitle(R.string.preferences_settings)
81 sl.apply { 60 sl.apply {
82 add( 61 add(
83 SubmenuSetting( 62 SubmenuSetting(
@@ -119,12 +98,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
119 } 98 }
120 99
121 private fun addGeneralSettings(sl: ArrayList<SettingsItem>) { 100 private fun addGeneralSettings(sl: ArrayList<SettingsItem>) {
122 fragmentView.fragmentActivity.setTitle(R.string.preferences_general) 101 settingsActivity.setTitle(R.string.preferences_general)
123 val rendererSection = settings!!.getSection(Settings.SECTION_RENDERER) 102 val rendererSection = settings.getSection(Settings.SECTION_RENDERER)
124 val frameLimitEnable = 103 val frameLimitEnable =
125 rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT) 104 rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT)
126 val frameLimitValue = rendererSection.getSetting(SettingsFile.KEY_RENDERER_SPEED_LIMIT) 105 val frameLimitValue = rendererSection.getSetting(SettingsFile.KEY_RENDERER_SPEED_LIMIT)
127 val cpuSection = settings!!.getSection(Settings.SECTION_CPU) 106 val cpuSection = settings.getSection(Settings.SECTION_CPU)
128 val cpuAccuracy = cpuSection!!.getSetting(SettingsFile.KEY_CPU_ACCURACY) 107 val cpuAccuracy = cpuSection!!.getSetting(SettingsFile.KEY_CPU_ACCURACY)
129 sl.apply { 108 sl.apply {
130 add( 109 add(
@@ -166,8 +145,8 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
166 } 145 }
167 146
168 private fun addSystemSettings(sl: ArrayList<SettingsItem>) { 147 private fun addSystemSettings(sl: ArrayList<SettingsItem>) {
169 fragmentView.fragmentActivity.setTitle(R.string.preferences_system) 148 settingsActivity.setTitle(R.string.preferences_system)
170 val systemSection = settings!!.getSection(Settings.SECTION_SYSTEM) 149 val systemSection = settings.getSection(Settings.SECTION_SYSTEM)
171 val dockedMode = systemSection!!.getSetting(SettingsFile.KEY_USE_DOCKED_MODE) 150 val dockedMode = systemSection!!.getSetting(SettingsFile.KEY_USE_DOCKED_MODE)
172 val region = systemSection.getSetting(SettingsFile.KEY_REGION_INDEX) 151 val region = systemSection.getSetting(SettingsFile.KEY_REGION_INDEX)
173 val language = systemSection.getSetting(SettingsFile.KEY_LANGUAGE_INDEX) 152 val language = systemSection.getSetting(SettingsFile.KEY_LANGUAGE_INDEX)
@@ -210,8 +189,8 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
210 } 189 }
211 190
212 private fun addGraphicsSettings(sl: ArrayList<SettingsItem>) { 191 private fun addGraphicsSettings(sl: ArrayList<SettingsItem>) {
213 fragmentView.fragmentActivity.setTitle(R.string.preferences_graphics) 192 settingsActivity.setTitle(R.string.preferences_graphics)
214 val rendererSection = settings!!.getSection(Settings.SECTION_RENDERER) 193 val rendererSection = settings.getSection(Settings.SECTION_RENDERER)
215 val rendererBackend = rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_BACKEND) 194 val rendererBackend = rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_BACKEND)
216 val rendererAccuracy = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ACCURACY) 195 val rendererAccuracy = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ACCURACY)
217 val rendererResolution = rendererSection.getSetting(SettingsFile.KEY_RENDERER_RESOLUTION) 196 val rendererResolution = rendererSection.getSetting(SettingsFile.KEY_RENDERER_RESOLUTION)
@@ -305,8 +284,8 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
305 } 284 }
306 285
307 private fun addAudioSettings(sl: ArrayList<SettingsItem>) { 286 private fun addAudioSettings(sl: ArrayList<SettingsItem>) {
308 fragmentView.fragmentActivity.setTitle(R.string.preferences_audio) 287 settingsActivity.setTitle(R.string.preferences_audio)
309 val audioSection = settings!!.getSection(Settings.SECTION_AUDIO) 288 val audioSection = settings.getSection(Settings.SECTION_AUDIO)
310 val audioVolume = audioSection!!.getSetting(SettingsFile.KEY_AUDIO_VOLUME) 289 val audioVolume = audioSection!!.getSetting(SettingsFile.KEY_AUDIO_VOLUME)
311 sl.add( 290 sl.add(
312 SliderSetting( 291 SliderSetting(
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 2d9700fca..9a14c5795 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
@@ -3,9 +3,7 @@
3 3
4package org.yuzu.yuzu_emu.features.settings.ui 4package org.yuzu.yuzu_emu.features.settings.ui
5 5
6import androidx.fragment.app.FragmentActivity
7import org.yuzu.yuzu_emu.features.settings.model.Setting 6import org.yuzu.yuzu_emu.features.settings.model.Setting
8import org.yuzu.yuzu_emu.features.settings.model.Settings
9import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
10 8
11/** 9/**
@@ -14,14 +12,6 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
14 */ 12 */
15interface SettingsFragmentView { 13interface SettingsFragmentView {
16 /** 14 /**
17 * Called by the containing Activity to notify the Fragment that an
18 * asynchronous load operation completed.
19 *
20 * @param settings The (possibly null) result of the ini load operation.
21 */
22 fun onSettingsFileLoaded(settings: Settings)
23
24 /**
25 * Pass an ArrayList to the View so that it can be displayed on screen. 15 * Pass an ArrayList to the View so that it can be displayed on screen.
26 * 16 *
27 * @param settingsList The result of converting the HashMap to an ArrayList 17 * @param settingsList The result of converting the HashMap to an ArrayList
@@ -29,15 +19,14 @@ interface SettingsFragmentView {
29 fun showSettingsList(settingsList: ArrayList<SettingsItem>) 19 fun showSettingsList(settingsList: ArrayList<SettingsItem>)
30 20
31 /** 21 /**
32 * Called by the containing Activity when an asynchronous load operation fails. 22 * Instructs the Fragment to load the settings screen.
33 * Instructs the Fragment to load the settings screen with defaults selected.
34 */ 23 */
35 fun loadDefaultSettings() 24 fun loadSettingsList()
36 25
37 /** 26 /**
38 * @return The Fragment's containing activity. 27 * @return The Fragment's containing activity.
39 */ 28 */
40 val fragmentActivity: FragmentActivity 29 val activityView: SettingsActivityView?
41 30
42 /** 31 /**
43 * Tell the Fragment to tell the containing Activity to show a new 32 * Tell the Fragment to tell the containing Activity to show a new