diff options
| author | 2023-03-07 21:14:47 -0500 | |
|---|---|---|
| committer | 2023-06-03 00:05:38 -0700 | |
| commit | 14d156701f63685397d953cdd59570fbfcc7b098 (patch) | |
| tree | e62a8ef02eea1845304a34a06c43508c29509863 /src/android | |
| parent | android: Convert SettingsFragment to Kotlin (diff) | |
| download | yuzu-14d156701f63685397d953cdd59570fbfcc7b098.tar.gz yuzu-14d156701f63685397d953cdd59570fbfcc7b098.tar.xz yuzu-14d156701f63685397d953cdd59570fbfcc7b098.zip | |
android: Convert SettingsFragmentPresenter to Kotlin
Diffstat (limited to 'src/android')
2 files changed, 333 insertions, 184 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java deleted file mode 100644 index 49447e606..000000000 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java +++ /dev/null | |||
| @@ -1,184 +0,0 @@ | |||
| 1 | package org.yuzu.yuzu_emu.features.settings.ui; | ||
| 2 | |||
| 3 | import android.text.TextUtils; | ||
| 4 | |||
| 5 | import org.yuzu.yuzu_emu.R; | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.Setting; | ||
| 7 | import org.yuzu.yuzu_emu.features.settings.model.SettingSection; | ||
| 8 | import org.yuzu.yuzu_emu.features.settings.model.Settings; | ||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting; | ||
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.CheckBoxSetting; | ||
| 11 | import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting; | ||
| 12 | import org.yuzu.yuzu_emu.features.settings.model.view.HeaderSetting; | ||
| 13 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem; | ||
| 14 | import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting; | ||
| 15 | import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting; | ||
| 16 | import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting; | ||
| 17 | import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile; | ||
| 18 | |||
| 19 | import java.util.ArrayList; | ||
| 20 | |||
| 21 | public final class SettingsFragmentPresenter { | ||
| 22 | private SettingsFragmentView mView; | ||
| 23 | |||
| 24 | private String mMenuTag; | ||
| 25 | private String mGameID; | ||
| 26 | |||
| 27 | private Settings mSettings; | ||
| 28 | private ArrayList<SettingsItem> mSettingsList; | ||
| 29 | |||
| 30 | public SettingsFragmentPresenter(SettingsFragmentView view) { | ||
| 31 | mView = view; | ||
| 32 | } | ||
| 33 | |||
| 34 | public void onCreate(String menuTag, String gameId) { | ||
| 35 | mGameID = gameId; | ||
| 36 | mMenuTag = menuTag; | ||
| 37 | } | ||
| 38 | |||
| 39 | public void onViewCreated(Settings settings) { | ||
| 40 | setSettings(settings); | ||
| 41 | } | ||
| 42 | |||
| 43 | /** | ||
| 44 | * If the screen is rotated, the Activity will forget the settings map. This fragment | ||
| 45 | * won't, though; so rather than have the Activity reload from disk, have the fragment pass | ||
| 46 | * the settings map back to the Activity. | ||
| 47 | */ | ||
| 48 | public void onAttach() { | ||
| 49 | if (mSettings != null) { | ||
| 50 | mView.passSettingsToActivity(mSettings); | ||
| 51 | } | ||
| 52 | } | ||
| 53 | |||
| 54 | public void putSetting(Setting setting) { | ||
| 55 | mSettings.getSection(setting.getSection()).putSetting(setting); | ||
| 56 | } | ||
| 57 | |||
| 58 | private StringSetting asStringSetting(Setting setting) { | ||
| 59 | if (setting == null) { | ||
| 60 | return null; | ||
| 61 | } | ||
| 62 | |||
| 63 | StringSetting stringSetting = new StringSetting(setting.getKey(), setting.getSection(), setting.getValueAsString()); | ||
| 64 | putSetting(stringSetting); | ||
| 65 | return stringSetting; | ||
| 66 | } | ||
| 67 | |||
| 68 | public void loadDefaultSettings() { | ||
| 69 | loadSettingsList(); | ||
| 70 | } | ||
| 71 | |||
| 72 | public void setSettings(Settings settings) { | ||
| 73 | if (mSettingsList == null && settings != null) { | ||
| 74 | mSettings = settings; | ||
| 75 | |||
| 76 | loadSettingsList(); | ||
| 77 | } else { | ||
| 78 | mView.getActivity().setTitle(R.string.preferences_settings); | ||
| 79 | mView.showSettingsList(mSettingsList); | ||
| 80 | } | ||
| 81 | } | ||
| 82 | |||
| 83 | private void loadSettingsList() { | ||
| 84 | if (!TextUtils.isEmpty(mGameID)) { | ||
| 85 | mView.getActivity().setTitle("Game Settings: " + mGameID); | ||
| 86 | } | ||
| 87 | ArrayList<SettingsItem> sl = new ArrayList<>(); | ||
| 88 | |||
| 89 | if (mMenuTag == null) { | ||
| 90 | return; | ||
| 91 | } | ||
| 92 | |||
| 93 | switch (mMenuTag) { | ||
| 94 | case SettingsFile.FILE_NAME_CONFIG: | ||
| 95 | addConfigSettings(sl); | ||
| 96 | break; | ||
| 97 | case Settings.SECTION_GENERAL: | ||
| 98 | addGeneralSettings(sl); | ||
| 99 | break; | ||
| 100 | case Settings.SECTION_SYSTEM: | ||
| 101 | addSystemSettings(sl); | ||
| 102 | break; | ||
| 103 | case Settings.SECTION_RENDERER: | ||
| 104 | addGraphicsSettings(sl); | ||
| 105 | break; | ||
| 106 | case Settings.SECTION_AUDIO: | ||
| 107 | addAudioSettings(sl); | ||
| 108 | break; | ||
| 109 | default: | ||
| 110 | mView.showToastMessage("Unimplemented menu", false); | ||
| 111 | return; | ||
| 112 | } | ||
| 113 | |||
| 114 | mSettingsList = sl; | ||
| 115 | mView.showSettingsList(mSettingsList); | ||
| 116 | } | ||
| 117 | |||
| 118 | private void addConfigSettings(ArrayList<SettingsItem> sl) { | ||
| 119 | mView.getActivity().setTitle(R.string.preferences_settings); | ||
| 120 | |||
| 121 | sl.add(new SubmenuSetting(null, null, R.string.preferences_general, 0, Settings.SECTION_GENERAL)); | ||
| 122 | sl.add(new SubmenuSetting(null, null, R.string.preferences_system, 0, Settings.SECTION_SYSTEM)); | ||
| 123 | sl.add(new SubmenuSetting(null, null, R.string.preferences_graphics, 0, Settings.SECTION_RENDERER)); | ||
| 124 | sl.add(new SubmenuSetting(null, null, R.string.preferences_audio, 0, Settings.SECTION_AUDIO)); | ||
| 125 | } | ||
| 126 | |||
| 127 | private void addGeneralSettings(ArrayList<SettingsItem> sl) { | ||
| 128 | mView.getActivity().setTitle(R.string.preferences_general); | ||
| 129 | |||
| 130 | SettingSection rendererSection = mSettings.getSection(Settings.SECTION_RENDERER); | ||
| 131 | Setting frameLimitEnable = rendererSection.getSetting(SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT); | ||
| 132 | Setting frameLimitValue = rendererSection.getSetting(SettingsFile.KEY_RENDERER_SPEED_LIMIT); | ||
| 133 | |||
| 134 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT, Settings.SECTION_RENDERER, R.string.frame_limit_enable, R.string.frame_limit_enable_description, true, frameLimitEnable)); | ||
| 135 | sl.add(new SliderSetting(SettingsFile.KEY_RENDERER_SPEED_LIMIT, Settings.SECTION_RENDERER, R.string.frame_limit_slider, R.string.frame_limit_slider_description, 1, 200, "%", 100, frameLimitValue)); | ||
| 136 | |||
| 137 | SettingSection cpuSection = mSettings.getSection(Settings.SECTION_CPU); | ||
| 138 | Setting cpuAccuracy = cpuSection.getSetting(SettingsFile.KEY_CPU_ACCURACY); | ||
| 139 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_CPU_ACCURACY, Settings.SECTION_CPU, R.string.cpu_accuracy, 0, R.array.cpuAccuracyNames, R.array.cpuAccuracyValues, 0, cpuAccuracy)); | ||
| 140 | } | ||
| 141 | |||
| 142 | private void addSystemSettings(ArrayList<SettingsItem> sl) { | ||
| 143 | mView.getActivity().setTitle(R.string.preferences_system); | ||
| 144 | |||
| 145 | SettingSection systemSection = mSettings.getSection(Settings.SECTION_SYSTEM); | ||
| 146 | Setting dockedMode = systemSection.getSetting(SettingsFile.KEY_USE_DOCKED_MODE); | ||
| 147 | Setting region = systemSection.getSetting(SettingsFile.KEY_REGION_INDEX); | ||
| 148 | Setting language = systemSection.getSetting(SettingsFile.KEY_LANGUAGE_INDEX); | ||
| 149 | |||
| 150 | sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_DOCKED_MODE, Settings.SECTION_SYSTEM, R.string.use_docked_mode, R.string.use_docked_mode_description, true, dockedMode)); | ||
| 151 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_REGION_INDEX, Settings.SECTION_SYSTEM, R.string.emulated_region, 0, R.array.regionNames, R.array.regionValues, -1, region)); | ||
| 152 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_LANGUAGE_INDEX, Settings.SECTION_SYSTEM, R.string.emulated_language, 0, R.array.languageNames, R.array.languageValues, 1, language)); | ||
| 153 | } | ||
| 154 | |||
| 155 | private void addGraphicsSettings(ArrayList<SettingsItem> sl) { | ||
| 156 | mView.getActivity().setTitle(R.string.preferences_graphics); | ||
| 157 | |||
| 158 | SettingSection rendererSection = mSettings.getSection(Settings.SECTION_RENDERER); | ||
| 159 | Setting rendererBackend = rendererSection.getSetting(SettingsFile.KEY_RENDERER_BACKEND); | ||
| 160 | Setting rendererAccuracy = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ACCURACY); | ||
| 161 | Setting rendererReolution = rendererSection.getSetting(SettingsFile.KEY_RENDERER_RESOLUTION); | ||
| 162 | Setting rendererAspectRation = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO); | ||
| 163 | Setting rendererForceMaxClocks = rendererSection.getSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK); | ||
| 164 | Setting rendererAsynchronousShaders = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS); | ||
| 165 | Setting rendererDebug = rendererSection.getSetting(SettingsFile.KEY_RENDERER_DEBUG); | ||
| 166 | |||
| 167 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_BACKEND, Settings.SECTION_RENDERER, R.string.renderer_api, 0, R.array.rendererApiNames, R.array.rendererApiValues, 1, rendererBackend)); | ||
| 168 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ACCURACY, Settings.SECTION_RENDERER, R.string.renderer_accuracy, 0, R.array.rendererAccuracyNames, R.array.rendererAccuracyValues, 1, rendererAccuracy)); | ||
| 169 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_RESOLUTION, Settings.SECTION_RENDERER, R.string.renderer_resolution, 0, R.array.rendererResolutionNames, R.array.rendererResolutionValues, 2, rendererReolution)); | ||
| 170 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO, Settings.SECTION_RENDERER, R.string.renderer_aspect_ratio, 0, R.array.rendererAspectRatioNames, R.array.rendererAspectRatioValues, 0, rendererAspectRation)); | ||
| 171 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK, Settings.SECTION_RENDERER, R.string.renderer_force_max_clock, R.string.renderer_force_max_clock_description, true, rendererForceMaxClocks)); | ||
| 172 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS, Settings.SECTION_RENDERER, R.string.renderer_asynchronous_shaders, R.string.renderer_asynchronous_shaders_description, false, rendererAsynchronousShaders)); | ||
| 173 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_DEBUG, Settings.SECTION_RENDERER, R.string.renderer_debug, R.string.renderer_debug_description, false, rendererDebug)); | ||
| 174 | } | ||
| 175 | |||
| 176 | private void addAudioSettings(ArrayList<SettingsItem> sl) { | ||
| 177 | mView.getActivity().setTitle(R.string.preferences_audio); | ||
| 178 | |||
| 179 | SettingSection audioSection = mSettings.getSection(Settings.SECTION_AUDIO); | ||
| 180 | Setting audioVolume = audioSection.getSetting(SettingsFile.KEY_AUDIO_VOLUME); | ||
| 181 | |||
| 182 | sl.add(new SliderSetting(SettingsFile.KEY_AUDIO_VOLUME, Settings.SECTION_AUDIO, R.string.audio_volume, R.string.audio_volume_description, 0, 100, "%", 100, audioVolume)); | ||
| 183 | } | ||
| 184 | } | ||
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 new file mode 100644 index 000000000..e4058ffc2 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt | |||
| @@ -0,0 +1,333 @@ | |||
| 1 | package org.yuzu.yuzu_emu.features.settings.ui | ||
| 2 | |||
| 3 | import android.text.TextUtils | ||
| 4 | import org.yuzu.yuzu_emu.R | ||
| 5 | import org.yuzu.yuzu_emu.features.settings.model.Setting | ||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.Settings | ||
| 7 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||
| 8 | import org.yuzu.yuzu_emu.features.settings.model.view.* | ||
| 9 | import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||
| 10 | |||
| 11 | class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) { | ||
| 12 | private var menuTag: String? = null | ||
| 13 | private lateinit var gameId: String | ||
| 14 | private var settings: Settings? = null | ||
| 15 | private var settingsList: ArrayList<SettingsItem>? = null | ||
| 16 | |||
| 17 | fun onCreate(menuTag: String, gameId: String) { | ||
| 18 | this.gameId = gameId | ||
| 19 | this.menuTag = menuTag | ||
| 20 | } | ||
| 21 | |||
| 22 | fun onViewCreated(settings: Settings?) { | ||
| 23 | setSettings(settings) | ||
| 24 | } | ||
| 25 | |||
| 26 | /** | ||
| 27 | * If the screen is rotated, the Activity will forget the settings map. This fragment | ||
| 28 | * won't, though; so rather than have the Activity reload from disk, have the fragment pass | ||
| 29 | * the settings map back to the Activity. | ||
| 30 | */ | ||
| 31 | fun onAttach() { | ||
| 32 | if (settings != null) { | ||
| 33 | fragmentView.passSettingsToActivity(settings!!) | ||
| 34 | } | ||
| 35 | } | ||
| 36 | |||
| 37 | fun putSetting(setting: Setting) { | ||
| 38 | settings!!.getSection(setting.section)!!.putSetting(setting) | ||
| 39 | } | ||
| 40 | |||
| 41 | private fun asStringSetting(setting: Setting?): StringSetting? { | ||
| 42 | if (setting == null) { | ||
| 43 | return null | ||
| 44 | } | ||
| 45 | val stringSetting = StringSetting(setting.key, setting.section, setting.valueAsString) | ||
| 46 | putSetting(stringSetting) | ||
| 47 | return stringSetting | ||
| 48 | } | ||
| 49 | |||
| 50 | fun loadDefaultSettings() { | ||
| 51 | loadSettingsList() | ||
| 52 | } | ||
| 53 | |||
| 54 | fun setSettings(settings: Settings?) { | ||
| 55 | if (settingsList == null && settings != null) { | ||
| 56 | this.settings = settings | ||
| 57 | loadSettingsList() | ||
| 58 | } else { | ||
| 59 | fragmentView.fragmentActivity.setTitle(R.string.preferences_settings) | ||
| 60 | fragmentView.showSettingsList(settingsList!!) | ||
| 61 | } | ||
| 62 | } | ||
| 63 | |||
| 64 | private fun loadSettingsList() { | ||
| 65 | if (!TextUtils.isEmpty(gameId)) { | ||
| 66 | fragmentView.fragmentActivity.title = "Game Settings: $gameId" | ||
| 67 | } | ||
| 68 | val sl = ArrayList<SettingsItem>() | ||
| 69 | if (menuTag == null) { | ||
| 70 | return | ||
| 71 | } | ||
| 72 | when (menuTag) { | ||
| 73 | SettingsFile.FILE_NAME_CONFIG -> addConfigSettings(sl) | ||
| 74 | Settings.SECTION_GENERAL -> addGeneralSettings(sl) | ||
| 75 | Settings.SECTION_SYSTEM -> addSystemSettings(sl) | ||
| 76 | Settings.SECTION_RENDERER -> addGraphicsSettings(sl) | ||
| 77 | Settings.SECTION_AUDIO -> addAudioSettings(sl) | ||
| 78 | else -> { | ||
| 79 | fragmentView.showToastMessage("Unimplemented menu", false) | ||
| 80 | return | ||
| 81 | } | ||
| 82 | } | ||
| 83 | settingsList = sl | ||
| 84 | fragmentView.showSettingsList(settingsList!!) | ||
| 85 | } | ||
| 86 | |||
| 87 | private fun addConfigSettings(sl: ArrayList<SettingsItem>) { | ||
| 88 | fragmentView.fragmentActivity.setTitle(R.string.preferences_settings) | ||
| 89 | sl.apply { | ||
| 90 | add( | ||
| 91 | SubmenuSetting( | ||
| 92 | null, | ||
| 93 | null, | ||
| 94 | R.string.preferences_general, | ||
| 95 | 0, | ||
| 96 | Settings.SECTION_GENERAL | ||
| 97 | ) | ||
| 98 | ) | ||
| 99 | add( | ||
| 100 | SubmenuSetting( | ||
| 101 | null, | ||
| 102 | null, | ||
| 103 | R.string.preferences_system, | ||
| 104 | 0, | ||
| 105 | Settings.SECTION_SYSTEM | ||
| 106 | ) | ||
| 107 | ) | ||
| 108 | add( | ||
| 109 | SubmenuSetting( | ||
| 110 | null, | ||
| 111 | null, | ||
| 112 | R.string.preferences_graphics, | ||
| 113 | 0, | ||
| 114 | Settings.SECTION_RENDERER | ||
| 115 | ) | ||
| 116 | ) | ||
| 117 | add( | ||
| 118 | SubmenuSetting( | ||
| 119 | null, | ||
| 120 | null, | ||
| 121 | R.string.preferences_audio, | ||
| 122 | 0, | ||
| 123 | Settings.SECTION_AUDIO | ||
| 124 | ) | ||
| 125 | ) | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | private fun addGeneralSettings(sl: ArrayList<SettingsItem>) { | ||
| 130 | fragmentView.fragmentActivity.setTitle(R.string.preferences_general) | ||
| 131 | val rendererSection = settings!!.getSection(Settings.SECTION_RENDERER) | ||
| 132 | val frameLimitEnable = | ||
| 133 | rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT) | ||
| 134 | val frameLimitValue = rendererSection.getSetting(SettingsFile.KEY_RENDERER_SPEED_LIMIT) | ||
| 135 | val cpuSection = settings!!.getSection(Settings.SECTION_CPU) | ||
| 136 | val cpuAccuracy = cpuSection!!.getSetting(SettingsFile.KEY_CPU_ACCURACY) | ||
| 137 | sl.apply { | ||
| 138 | add( | ||
| 139 | CheckBoxSetting( | ||
| 140 | SettingsFile.KEY_RENDERER_USE_SPEED_LIMIT, | ||
| 141 | Settings.SECTION_RENDERER, | ||
| 142 | frameLimitEnable, | ||
| 143 | R.string.frame_limit_enable, | ||
| 144 | R.string.frame_limit_enable_description, | ||
| 145 | true | ||
| 146 | ) | ||
| 147 | ) | ||
| 148 | add( | ||
| 149 | SliderSetting( | ||
| 150 | SettingsFile.KEY_RENDERER_SPEED_LIMIT, | ||
| 151 | Settings.SECTION_RENDERER, | ||
| 152 | frameLimitValue, | ||
| 153 | R.string.frame_limit_slider, | ||
| 154 | R.string.frame_limit_slider_description, | ||
| 155 | 1, | ||
| 156 | 200, | ||
| 157 | "%", | ||
| 158 | 100 | ||
| 159 | ) | ||
| 160 | ) | ||
| 161 | add( | ||
| 162 | SingleChoiceSetting( | ||
| 163 | SettingsFile.KEY_CPU_ACCURACY, | ||
| 164 | Settings.SECTION_CPU, | ||
| 165 | cpuAccuracy, | ||
| 166 | R.string.cpu_accuracy, | ||
| 167 | 0, | ||
| 168 | R.array.cpuAccuracyNames, | ||
| 169 | R.array.cpuAccuracyValues, | ||
| 170 | 0 | ||
| 171 | ) | ||
| 172 | ) | ||
| 173 | } | ||
| 174 | } | ||
| 175 | |||
| 176 | private fun addSystemSettings(sl: ArrayList<SettingsItem>) { | ||
| 177 | fragmentView.fragmentActivity.setTitle(R.string.preferences_system) | ||
| 178 | val systemSection = settings!!.getSection(Settings.SECTION_SYSTEM) | ||
| 179 | val dockedMode = systemSection!!.getSetting(SettingsFile.KEY_USE_DOCKED_MODE) | ||
| 180 | val region = systemSection.getSetting(SettingsFile.KEY_REGION_INDEX) | ||
| 181 | val language = systemSection.getSetting(SettingsFile.KEY_LANGUAGE_INDEX) | ||
| 182 | sl.apply { | ||
| 183 | add( | ||
| 184 | CheckBoxSetting( | ||
| 185 | SettingsFile.KEY_USE_DOCKED_MODE, | ||
| 186 | Settings.SECTION_SYSTEM, | ||
| 187 | dockedMode, | ||
| 188 | R.string.use_docked_mode, | ||
| 189 | R.string.use_docked_mode_description, | ||
| 190 | true, | ||
| 191 | ) | ||
| 192 | ) | ||
| 193 | add( | ||
| 194 | SingleChoiceSetting( | ||
| 195 | SettingsFile.KEY_REGION_INDEX, | ||
| 196 | Settings.SECTION_SYSTEM, | ||
| 197 | region, | ||
| 198 | R.string.emulated_region, | ||
| 199 | 0, | ||
| 200 | R.array.regionNames, | ||
| 201 | R.array.regionValues, | ||
| 202 | -1 | ||
| 203 | ) | ||
| 204 | ) | ||
| 205 | add( | ||
| 206 | SingleChoiceSetting( | ||
| 207 | SettingsFile.KEY_LANGUAGE_INDEX, | ||
| 208 | Settings.SECTION_SYSTEM, | ||
| 209 | language, | ||
| 210 | R.string.emulated_language, | ||
| 211 | 0, | ||
| 212 | R.array.languageNames, | ||
| 213 | R.array.languageValues, | ||
| 214 | 1 | ||
| 215 | ) | ||
| 216 | ) | ||
| 217 | } | ||
| 218 | } | ||
| 219 | |||
| 220 | private fun addGraphicsSettings(sl: ArrayList<SettingsItem>) { | ||
| 221 | fragmentView.fragmentActivity.setTitle(R.string.preferences_graphics) | ||
| 222 | val rendererSection = settings!!.getSection(Settings.SECTION_RENDERER) | ||
| 223 | val rendererBackend = rendererSection!!.getSetting(SettingsFile.KEY_RENDERER_BACKEND) | ||
| 224 | val rendererAccuracy = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ACCURACY) | ||
| 225 | val rendererResolution = rendererSection.getSetting(SettingsFile.KEY_RENDERER_RESOLUTION) | ||
| 226 | val rendererAspectRatio = | ||
| 227 | rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO) | ||
| 228 | val rendererForceMaxClocks = | ||
| 229 | rendererSection.getSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK) | ||
| 230 | val rendererAsynchronousShaders = | ||
| 231 | rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS) | ||
| 232 | val rendererDebug = rendererSection.getSetting(SettingsFile.KEY_RENDERER_DEBUG) | ||
| 233 | sl.apply { | ||
| 234 | add( | ||
| 235 | SingleChoiceSetting( | ||
| 236 | SettingsFile.KEY_RENDERER_BACKEND, | ||
| 237 | Settings.SECTION_RENDERER, | ||
| 238 | rendererBackend, | ||
| 239 | R.string.renderer_api, | ||
| 240 | 0, | ||
| 241 | R.array.rendererApiNames, | ||
| 242 | R.array.rendererApiValues, | ||
| 243 | 1 | ||
| 244 | ) | ||
| 245 | ) | ||
| 246 | add( | ||
| 247 | SingleChoiceSetting( | ||
| 248 | SettingsFile.KEY_RENDERER_ACCURACY, | ||
| 249 | Settings.SECTION_RENDERER, | ||
| 250 | rendererAccuracy, | ||
| 251 | R.string.renderer_accuracy, | ||
| 252 | 0, | ||
| 253 | R.array.rendererAccuracyNames, | ||
| 254 | R.array.rendererAccuracyValues, | ||
| 255 | 1 | ||
| 256 | ) | ||
| 257 | ) | ||
| 258 | add( | ||
| 259 | SingleChoiceSetting( | ||
| 260 | SettingsFile.KEY_RENDERER_RESOLUTION, | ||
| 261 | Settings.SECTION_RENDERER, | ||
| 262 | rendererResolution, | ||
| 263 | R.string.renderer_resolution, | ||
| 264 | 0, | ||
| 265 | R.array.rendererResolutionNames, | ||
| 266 | R.array.rendererResolutionValues, | ||
| 267 | 2 | ||
| 268 | ) | ||
| 269 | ) | ||
| 270 | add( | ||
| 271 | SingleChoiceSetting( | ||
| 272 | SettingsFile.KEY_RENDERER_ASPECT_RATIO, | ||
| 273 | Settings.SECTION_RENDERER, | ||
| 274 | rendererAspectRatio, | ||
| 275 | R.string.renderer_aspect_ratio, | ||
| 276 | 0, | ||
| 277 | R.array.rendererAspectRatioNames, | ||
| 278 | R.array.rendererAspectRatioValues, | ||
| 279 | 0 | ||
| 280 | ) | ||
| 281 | ) | ||
| 282 | add( | ||
| 283 | CheckBoxSetting( | ||
| 284 | SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK, | ||
| 285 | Settings.SECTION_RENDERER, | ||
| 286 | rendererForceMaxClocks, | ||
| 287 | R.string.renderer_force_max_clock, | ||
| 288 | R.string.renderer_force_max_clock_description, | ||
| 289 | true | ||
| 290 | ) | ||
| 291 | ) | ||
| 292 | add( | ||
| 293 | CheckBoxSetting( | ||
| 294 | SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS, | ||
| 295 | Settings.SECTION_RENDERER, | ||
| 296 | rendererAsynchronousShaders, | ||
| 297 | R.string.renderer_asynchronous_shaders, | ||
| 298 | R.string.renderer_asynchronous_shaders_description, | ||
| 299 | false | ||
| 300 | ) | ||
| 301 | ) | ||
| 302 | add( | ||
| 303 | CheckBoxSetting( | ||
| 304 | SettingsFile.KEY_RENDERER_DEBUG, | ||
| 305 | Settings.SECTION_RENDERER, | ||
| 306 | rendererDebug, | ||
| 307 | R.string.renderer_debug, | ||
| 308 | R.string.renderer_debug_description, | ||
| 309 | false | ||
| 310 | ) | ||
| 311 | ) | ||
| 312 | } | ||
| 313 | } | ||
| 314 | |||
| 315 | private fun addAudioSettings(sl: ArrayList<SettingsItem>) { | ||
| 316 | fragmentView.fragmentActivity.setTitle(R.string.preferences_audio) | ||
| 317 | val audioSection = settings!!.getSection(Settings.SECTION_AUDIO) | ||
| 318 | val audioVolume = audioSection!!.getSetting(SettingsFile.KEY_AUDIO_VOLUME) | ||
| 319 | sl.add( | ||
| 320 | SliderSetting( | ||
| 321 | SettingsFile.KEY_AUDIO_VOLUME, | ||
| 322 | Settings.SECTION_AUDIO, | ||
| 323 | audioVolume, | ||
| 324 | R.string.audio_volume, | ||
| 325 | R.string.audio_volume_description, | ||
| 326 | 0, | ||
| 327 | 100, | ||
| 328 | "%", | ||
| 329 | 100 | ||
| 330 | ) | ||
| 331 | ) | ||
| 332 | } | ||
| 333 | } | ||