android: Refactor menu tags to enum
This commit is contained in:
		| @@ -80,6 +80,17 @@ object Settings { | ||||
|     const val SECTION_THEME = "Theme" | ||||
|     const val SECTION_DEBUG = "Debug" | ||||
|  | ||||
|     enum class MenuTag(val titleId: Int) { | ||||
|         SECTION_ROOT(R.string.advanced_settings), | ||||
|         SECTION_GENERAL(R.string.preferences_general), | ||||
|         SECTION_SYSTEM(R.string.preferences_system), | ||||
|         SECTION_RENDERER(R.string.preferences_graphics), | ||||
|         SECTION_AUDIO(R.string.preferences_audio), | ||||
|         SECTION_CPU(R.string.cpu), | ||||
|         SECTION_THEME(R.string.preferences_theme), | ||||
|         SECTION_DEBUG(R.string.preferences_debug); | ||||
|     } | ||||
|  | ||||
|     const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown" | ||||
|  | ||||
|     const val PREF_OVERLAY_VERSION = "OverlayVersion" | ||||
|   | ||||
| @@ -3,10 +3,12 @@ | ||||
|  | ||||
| package org.yuzu.yuzu_emu.features.settings.model.view | ||||
|  | ||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings | ||||
|  | ||||
| class SubmenuSetting( | ||||
|     titleId: Int, | ||||
|     descriptionId: Int, | ||||
|     val menuKey: String | ||||
|     val menuKey: Settings.MenuTag | ||||
| ) : SettingsItem(emptySetting, titleId, descriptionId) { | ||||
|     override val type = TYPE_SUBMENU | ||||
| } | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|  | ||||
| package org.yuzu.yuzu_emu.features.settings.ui | ||||
|  | ||||
| import android.annotation.SuppressLint | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| @@ -21,10 +22,11 @@ import androidx.navigation.fragment.navArgs | ||||
| import androidx.recyclerview.widget.LinearLayoutManager | ||||
| import com.google.android.material.divider.MaterialDividerItemDecoration | ||||
| import com.google.android.material.transition.MaterialSharedAxis | ||||
| import kotlinx.coroutines.flow.collectLatest | ||||
| import kotlinx.coroutines.launch | ||||
| import org.yuzu.yuzu_emu.R | ||||
| import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding | ||||
| import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings | ||||
| import org.yuzu.yuzu_emu.model.SettingsViewModel | ||||
|  | ||||
| class SettingsFragment : Fragment() { | ||||
| @@ -62,10 +64,10 @@ class SettingsFragment : Fragment() { | ||||
|         presenter = SettingsFragmentPresenter( | ||||
|             settingsViewModel, | ||||
|             settingsAdapter!!, | ||||
|             args.menuTag, | ||||
|             args.game?.gameId ?: "" | ||||
|             args.menuTag | ||||
|         ) | ||||
|  | ||||
|         binding.toolbarSettingsLayout.title = getString(args.menuTag.titleId) | ||||
|         val dividerDecoration = MaterialDividerItemDecoration( | ||||
|             requireContext(), | ||||
|             LinearLayoutManager.VERTICAL | ||||
| @@ -105,7 +107,7 @@ class SettingsFragment : Fragment() { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (args.menuTag == SettingsFile.FILE_NAME_CONFIG) { | ||||
|         if (args.menuTag == Settings.MenuTag.SECTION_ROOT) { | ||||
|             binding.toolbarSettings.inflateMenu(R.menu.menu_settings) | ||||
|             binding.toolbarSettings.setOnMenuItemClickListener { | ||||
|                 when (it.itemId) { | ||||
|   | ||||
| @@ -6,7 +6,6 @@ package org.yuzu.yuzu_emu.features.settings.ui | ||||
| import android.content.Context | ||||
| import android.content.SharedPreferences | ||||
| import android.os.Build | ||||
| import android.text.TextUtils | ||||
| import android.widget.Toast | ||||
| import androidx.preference.PreferenceManager | ||||
| import org.yuzu.yuzu_emu.R | ||||
| @@ -20,15 +19,13 @@ import org.yuzu.yuzu_emu.features.settings.model.LongSetting | ||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings | ||||
| import org.yuzu.yuzu_emu.features.settings.model.ShortSetting | ||||
| import org.yuzu.yuzu_emu.features.settings.model.view.* | ||||
| import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||||
| import org.yuzu.yuzu_emu.model.SettingsViewModel | ||||
| import org.yuzu.yuzu_emu.utils.NativeConfig | ||||
|  | ||||
| class SettingsFragmentPresenter( | ||||
|     private val settingsViewModel: SettingsViewModel, | ||||
|     private val adapter: SettingsAdapter, | ||||
|     private var menuTag: String, | ||||
|     private var gameId: String | ||||
|     private var menuTag: Settings.MenuTag | ||||
| ) { | ||||
|     private var settingsList = ArrayList<SettingsItem>() | ||||
|  | ||||
| @@ -53,24 +50,15 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     fun loadSettingsList() { | ||||
|         if (!TextUtils.isEmpty(gameId)) { | ||||
|             settingsViewModel.setToolbarTitle( | ||||
|                 context.getString( | ||||
|                     R.string.advanced_settings_game, | ||||
|                     gameId | ||||
|                 ) | ||||
|             ) | ||||
|         } | ||||
|  | ||||
|         val sl = ArrayList<SettingsItem>() | ||||
|         when (menuTag) { | ||||
|             SettingsFile.FILE_NAME_CONFIG -> addConfigSettings(sl) | ||||
|             Settings.SECTION_GENERAL -> addGeneralSettings(sl) | ||||
|             Settings.SECTION_SYSTEM -> addSystemSettings(sl) | ||||
|             Settings.SECTION_RENDERER -> addGraphicsSettings(sl) | ||||
|             Settings.SECTION_AUDIO -> addAudioSettings(sl) | ||||
|             Settings.SECTION_THEME -> addThemeSettings(sl) | ||||
|             Settings.SECTION_DEBUG -> addDebugSettings(sl) | ||||
|             Settings.MenuTag.SECTION_ROOT -> addConfigSettings(sl) | ||||
|             Settings.MenuTag.SECTION_GENERAL -> addGeneralSettings(sl) | ||||
|             Settings.MenuTag.SECTION_SYSTEM -> addSystemSettings(sl) | ||||
|             Settings.MenuTag.SECTION_RENDERER -> addGraphicsSettings(sl) | ||||
|             Settings.MenuTag.SECTION_AUDIO -> addAudioSettings(sl) | ||||
|             Settings.MenuTag.SECTION_THEME -> addThemeSettings(sl) | ||||
|             Settings.MenuTag.SECTION_DEBUG -> addDebugSettings(sl) | ||||
|             else -> { | ||||
|                 val context = YuzuApplication.appContext | ||||
|                 Toast.makeText( | ||||
| @@ -86,13 +74,12 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addConfigSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.advanced_settings)) | ||||
|         sl.apply { | ||||
|             add(SubmenuSetting(R.string.preferences_general, 0, Settings.SECTION_GENERAL)) | ||||
|             add(SubmenuSetting(R.string.preferences_system, 0, Settings.SECTION_SYSTEM)) | ||||
|             add(SubmenuSetting(R.string.preferences_graphics, 0, Settings.SECTION_RENDERER)) | ||||
|             add(SubmenuSetting(R.string.preferences_audio, 0, Settings.SECTION_AUDIO)) | ||||
|             add(SubmenuSetting(R.string.preferences_debug, 0, Settings.SECTION_DEBUG)) | ||||
|             add(SubmenuSetting(R.string.preferences_general, 0, Settings.MenuTag.SECTION_GENERAL)) | ||||
|             add(SubmenuSetting(R.string.preferences_system, 0, Settings.MenuTag.SECTION_SYSTEM)) | ||||
|             add(SubmenuSetting(R.string.preferences_graphics, 0, Settings.MenuTag.SECTION_RENDERER)) | ||||
|             add(SubmenuSetting(R.string.preferences_audio, 0, Settings.MenuTag.SECTION_AUDIO)) | ||||
|             add(SubmenuSetting(R.string.preferences_debug, 0, Settings.MenuTag.SECTION_DEBUG)) | ||||
|             add( | ||||
|                 RunnableSetting(R.string.reset_to_default, 0, false) { | ||||
|                     settingsViewModel.setShouldShowResetSettingsDialog(true) | ||||
| @@ -102,7 +89,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addGeneralSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_general)) | ||||
|         sl.apply { | ||||
|             add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) | ||||
|             add(ShortSetting.RENDERER_SPEED_LIMIT.key) | ||||
| @@ -112,7 +98,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addSystemSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_system)) | ||||
|         sl.apply { | ||||
|             add(BooleanSetting.USE_DOCKED_MODE.key) | ||||
|             add(IntSetting.REGION_INDEX.key) | ||||
| @@ -123,7 +108,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addGraphicsSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_graphics)) | ||||
|         sl.apply { | ||||
|             add(IntSetting.RENDERER_ACCURACY.key) | ||||
|             add(IntSetting.RENDERER_RESOLUTION.key) | ||||
| @@ -140,7 +124,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addAudioSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_audio)) | ||||
|         sl.apply { | ||||
|             add(IntSetting.AUDIO_OUTPUT_ENGINE.key) | ||||
|             add(ByteSetting.AUDIO_VOLUME.key) | ||||
| @@ -148,7 +131,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addThemeSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_theme)) | ||||
|         sl.apply { | ||||
|             val theme: AbstractIntSetting = object : AbstractIntSetting { | ||||
|                 override val int: Int | ||||
| @@ -261,7 +243,6 @@ class SettingsFragmentPresenter( | ||||
|     } | ||||
|  | ||||
|     private fun addDebugSettings(sl: ArrayList<SettingsItem>) { | ||||
|         settingsViewModel.setToolbarTitle(context.getString(R.string.preferences_debug)) | ||||
|         sl.apply { | ||||
|             add(HeaderSetting(R.string.gpu)) | ||||
|             add(IntSetting.RENDERER_BACKEND.key) | ||||
|   | ||||
| @@ -50,7 +50,6 @@ import org.yuzu.yuzu_emu.databinding.DialogOverlayAdjustBinding | ||||
| import org.yuzu.yuzu_emu.databinding.FragmentEmulationBinding | ||||
| import org.yuzu.yuzu_emu.features.settings.model.IntSetting | ||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings | ||||
| import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||||
| import org.yuzu.yuzu_emu.model.Game | ||||
| import org.yuzu.yuzu_emu.model.EmulationViewModel | ||||
| import org.yuzu.yuzu_emu.overlay.InputOverlay | ||||
| @@ -166,7 +165,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | ||||
|                 R.id.menu_settings -> { | ||||
|                     val action = HomeNavigationDirections.actionGlobalSettingsActivity( | ||||
|                         null, | ||||
|                         SettingsFile.FILE_NAME_CONFIG | ||||
|                         Settings.MenuTag.SECTION_ROOT | ||||
|                     ) | ||||
|                     binding.root.findNavController().navigate(action) | ||||
|                     true | ||||
|   | ||||
| @@ -37,7 +37,6 @@ import org.yuzu.yuzu_emu.adapters.HomeSettingAdapter | ||||
| import org.yuzu.yuzu_emu.databinding.FragmentHomeSettingsBinding | ||||
| import org.yuzu.yuzu_emu.features.DocumentProvider | ||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings | ||||
| import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||||
| import org.yuzu.yuzu_emu.model.HomeSetting | ||||
| import org.yuzu.yuzu_emu.model.HomeViewModel | ||||
| import org.yuzu.yuzu_emu.ui.main.MainActivity | ||||
| @@ -78,7 +77,7 @@ class HomeSettingsFragment : Fragment() { | ||||
|                     { | ||||
|                         val action = HomeNavigationDirections.actionGlobalSettingsActivity( | ||||
|                             null, | ||||
|                             SettingsFile.FILE_NAME_CONFIG | ||||
|                             Settings.MenuTag.SECTION_ROOT | ||||
|                         ) | ||||
|                         binding.root.findNavController().navigate(action) | ||||
|                     } | ||||
| @@ -100,7 +99,7 @@ class HomeSettingsFragment : Fragment() { | ||||
|                     { | ||||
|                         val action = HomeNavigationDirections.actionGlobalSettingsActivity( | ||||
|                             null, | ||||
|                             Settings.SECTION_THEME | ||||
|                             Settings.MenuTag.SECTION_THEME | ||||
|                         ) | ||||
|                         binding.root.findNavController().navigate(action) | ||||
|                     } | ||||
|   | ||||
| @@ -42,7 +42,6 @@ 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.utils.SettingsFile | ||||
| import org.yuzu.yuzu_emu.fragments.IndeterminateProgressDialogFragment | ||||
| import org.yuzu.yuzu_emu.fragments.MessageDialogFragment | ||||
| import org.yuzu.yuzu_emu.model.GamesViewModel | ||||
| @@ -109,7 +108,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | ||||
|                 R.id.homeSettingsFragment -> { | ||||
|                     val action = HomeNavigationDirections.actionGlobalSettingsActivity( | ||||
|                         null, | ||||
|                         SettingsFile.FILE_NAME_CONFIG | ||||
|                         Settings.MenuTag.SECTION_ROOT | ||||
|                     ) | ||||
|                     navHostFragment.navController.navigate(action) | ||||
|                 } | ||||
|   | ||||
| @@ -82,7 +82,7 @@ | ||||
|             app:nullable="true" /> | ||||
|         <argument | ||||
|             android:name="menuTag" | ||||
|             app:argType="string" /> | ||||
|             app:argType="org.yuzu.yuzu_emu.features.settings.model.Settings$MenuTag" /> | ||||
|     </activity> | ||||
|  | ||||
|     <action | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
|         android:label="SettingsFragment"> | ||||
|         <argument | ||||
|             android:name="menuTag" | ||||
|             app:argType="string" /> | ||||
|             app:argType="org.yuzu.yuzu_emu.features.settings.model.Settings$MenuTag" /> | ||||
|         <argument | ||||
|             android:name="game" | ||||
|             app:argType="org.yuzu.yuzu_emu.model.Game" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user