android: Refactor menu tags to enum
This commit is contained in:
parent
4a3cbf0021
commit
8baed5d95d
9 changed files with 39 additions and 46 deletions
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue