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