summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Charles Lombardo2023-07-10 22:12:17 -0400
committerGravatar Charles Lombardo2023-07-10 22:17:19 -0400
commit4b870b28e88eb5ba9e74f39ff342515ddbaa7df1 (patch)
treebea2b85147747a01eec2cf20b9b5630c001005fb /src
parentMerge pull request #11067 from t895/fragile-data (diff)
downloadyuzu-4b870b28e88eb5ba9e74f39ff342515ddbaa7df1.tar.gz
yuzu-4b870b28e88eb5ba9e74f39ff342515ddbaa7df1.tar.xz
yuzu-4b870b28e88eb5ba9e74f39ff342515ddbaa7df1.zip
android: Visualize disabled home options
Allow for displaying options in the home options that are disabled with messages that explain why they are disabled. This includes reasoning for the GPU driver installation button.
Diffstat (limited to 'src')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt16
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt114
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeSetting.kt5
-rw-r--r--src/android/app/src/main/res/values/strings.xml2
4 files changed, 84 insertions, 53 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
index d3df3bc81..aadc445f9 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
@@ -12,6 +12,7 @@ import androidx.core.content.res.ResourcesCompat
12import androidx.recyclerview.widget.RecyclerView 12import androidx.recyclerview.widget.RecyclerView
13import org.yuzu.yuzu_emu.R 13import org.yuzu.yuzu_emu.R
14import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding 14import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding
15import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
15import org.yuzu.yuzu_emu.model.HomeSetting 16import org.yuzu.yuzu_emu.model.HomeSetting
16 17
17class HomeSettingAdapter(private val activity: AppCompatActivity, var options: List<HomeSetting>) : 18class HomeSettingAdapter(private val activity: AppCompatActivity, var options: List<HomeSetting>) :
@@ -34,7 +35,14 @@ class HomeSettingAdapter(private val activity: AppCompatActivity, var options: L
34 35
35 override fun onClick(view: View) { 36 override fun onClick(view: View) {
36 val holder = view.tag as HomeOptionViewHolder 37 val holder = view.tag as HomeOptionViewHolder
37 holder.option.onClick.invoke() 38 if (holder.option.isEnabled.invoke()) {
39 holder.option.onClick.invoke()
40 } else {
41 MessageDialogFragment.newInstance(
42 holder.option.disabledTitleId,
43 holder.option.disabledMessageId
44 ).show(activity.supportFragmentManager, MessageDialogFragment.TAG)
45 }
38 } 46 }
39 47
40 inner class HomeOptionViewHolder(val binding: CardHomeOptionBinding) : 48 inner class HomeOptionViewHolder(val binding: CardHomeOptionBinding) :
@@ -65,6 +73,12 @@ class HomeSettingAdapter(private val activity: AppCompatActivity, var options: L
65 R.drawable.premium_background 73 R.drawable.premium_background
66 ) 74 )
67 } 75 }
76
77 if (!option.isEnabled.invoke()) {
78 binding.optionTitle.alpha = 0.5f
79 binding.optionDescription.alpha = 0.5f
80 binding.optionIcon.alpha = 0.5f
81 }
68 } 82 }
69 } 83 }
70} 84}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
index 5a36ffad4..c001af892 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
@@ -73,102 +73,113 @@ class HomeSettingsFragment : Fragment() {
73 HomeSetting( 73 HomeSetting(
74 R.string.advanced_settings, 74 R.string.advanced_settings,
75 R.string.settings_description, 75 R.string.settings_description,
76 R.drawable.ic_settings 76 R.drawable.ic_settings,
77 ) { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") } 77 { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") }
78 )
78 ) 79 )
79 add( 80 add(
80 HomeSetting( 81 HomeSetting(
81 R.string.open_user_folder, 82 R.string.open_user_folder,
82 R.string.open_user_folder_description, 83 R.string.open_user_folder_description,
83 R.drawable.ic_folder_open 84 R.drawable.ic_folder_open,
84 ) { openFileManager() } 85 { openFileManager() }
86 )
85 ) 87 )
86 add( 88 add(
87 HomeSetting( 89 HomeSetting(
88 R.string.preferences_theme, 90 R.string.preferences_theme,
89 R.string.theme_and_color_description, 91 R.string.theme_and_color_description,
90 R.drawable.ic_palette 92 R.drawable.ic_palette,
91 ) { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") } 93 { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") }
94 )
92 ) 95 )
93 96 add(
94 if (GpuDriverHelper.supportsCustomDriverLoading()) { 97 HomeSetting(
95 add( 98 R.string.install_gpu_driver,
96 HomeSetting( 99 R.string.install_gpu_driver_description,
97 R.string.install_gpu_driver, 100 R.drawable.ic_exit,
98 R.string.install_gpu_driver_description, 101 { driverInstaller() },
99 R.drawable.ic_exit 102 { GpuDriverHelper.supportsCustomDriverLoading() },
100 ) { driverInstaller() } 103 R.string.custom_driver_not_supported,
104 R.string.custom_driver_not_supported_description
101 ) 105 )
102 } 106 )
103
104 add( 107 add(
105 HomeSetting( 108 HomeSetting(
106 R.string.install_amiibo_keys, 109 R.string.install_amiibo_keys,
107 R.string.install_amiibo_keys_description, 110 R.string.install_amiibo_keys_description,
108 R.drawable.ic_nfc 111 R.drawable.ic_nfc,
109 ) { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) } 112 { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) }
113 )
110 ) 114 )
111 add( 115 add(
112 HomeSetting( 116 HomeSetting(
113 R.string.install_game_content, 117 R.string.install_game_content,
114 R.string.install_game_content_description, 118 R.string.install_game_content_description,
115 R.drawable.ic_system_update_alt 119 R.drawable.ic_system_update_alt,
116 ) { mainActivity.installGameUpdate.launch(arrayOf("*/*")) } 120 { mainActivity.installGameUpdate.launch(arrayOf("*/*")) }
121 )
117 ) 122 )
118 add( 123 add(
119 HomeSetting( 124 HomeSetting(
120 R.string.select_games_folder, 125 R.string.select_games_folder,
121 R.string.select_games_folder_description, 126 R.string.select_games_folder_description,
122 R.drawable.ic_add 127 R.drawable.ic_add,
123 ) { 128 {
124 mainActivity.getGamesDirectory.launch( 129 mainActivity.getGamesDirectory.launch(
125 Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data 130 Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data
126 ) 131 )
127 } 132 }
133 )
128 ) 134 )
129 add( 135 add(
130 HomeSetting( 136 HomeSetting(
131 R.string.manage_save_data, 137 R.string.manage_save_data,
132 R.string.import_export_saves_description, 138 R.string.import_export_saves_description,
133 R.drawable.ic_save 139 R.drawable.ic_save,
134 ) { 140 {
135 ImportExportSavesFragment().show( 141 ImportExportSavesFragment().show(
136 parentFragmentManager, 142 parentFragmentManager,
137 ImportExportSavesFragment.TAG 143 ImportExportSavesFragment.TAG
138 ) 144 )
139 } 145 }
146 )
140 ) 147 )
141 add( 148 add(
142 HomeSetting( 149 HomeSetting(
143 R.string.install_prod_keys, 150 R.string.install_prod_keys,
144 R.string.install_prod_keys_description, 151 R.string.install_prod_keys_description,
145 R.drawable.ic_unlock 152 R.drawable.ic_unlock,
146 ) { mainActivity.getProdKey.launch(arrayOf("*/*")) } 153 { mainActivity.getProdKey.launch(arrayOf("*/*")) }
154 )
147 ) 155 )
148 add( 156 add(
149 HomeSetting( 157 HomeSetting(
150 R.string.install_firmware, 158 R.string.install_firmware,
151 R.string.install_firmware_description, 159 R.string.install_firmware_description,
152 R.drawable.ic_firmware 160 R.drawable.ic_firmware,
153 ) { mainActivity.getFirmware.launch(arrayOf("application/zip")) } 161 { mainActivity.getFirmware.launch(arrayOf("application/zip")) }
162 )
154 ) 163 )
155 add( 164 add(
156 HomeSetting( 165 HomeSetting(
157 R.string.share_log, 166 R.string.share_log,
158 R.string.share_log_description, 167 R.string.share_log_description,
159 R.drawable.ic_log 168 R.drawable.ic_log,
160 ) { shareLog() } 169 { shareLog() }
170 )
161 ) 171 )
162 add( 172 add(
163 HomeSetting( 173 HomeSetting(
164 R.string.about, 174 R.string.about,
165 R.string.about_description, 175 R.string.about_description,
166 R.drawable.ic_info_outline 176 R.drawable.ic_info_outline,
167 ) { 177 {
168 exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) 178 exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
169 parentFragmentManager.primaryNavigationFragment?.findNavController() 179 parentFragmentManager.primaryNavigationFragment?.findNavController()
170 ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment) 180 ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment)
171 } 181 }
182 )
172 ) 183 )
173 } 184 }
174 185
@@ -178,12 +189,13 @@ class HomeSettingsFragment : Fragment() {
178 HomeSetting( 189 HomeSetting(
179 R.string.get_early_access, 190 R.string.get_early_access,
180 R.string.get_early_access_description, 191 R.string.get_early_access_description,
181 R.drawable.ic_diamond 192 R.drawable.ic_diamond,
182 ) { 193 {
183 exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) 194 exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
184 parentFragmentManager.primaryNavigationFragment?.findNavController() 195 parentFragmentManager.primaryNavigationFragment?.findNavController()
185 ?.navigate(R.id.action_homeSettingsFragment_to_earlyAccessFragment) 196 ?.navigate(R.id.action_homeSettingsFragment_to_earlyAccessFragment)
186 } 197 }
198 )
187 ) 199 )
188 } 200 }
189 201
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeSetting.kt
index 7049f2fa5..522d07c37 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeSetting.kt
@@ -7,5 +7,8 @@ data class HomeSetting(
7 val titleId: Int, 7 val titleId: Int,
8 val descriptionId: Int, 8 val descriptionId: Int,
9 val iconId: Int, 9 val iconId: Int,
10 val onClick: () -> Unit 10 val onClick: () -> Unit,
11 val isEnabled: () -> Boolean = { true },
12 val disabledTitleId: Int = 0,
13 val disabledMessageId: Int = 0
11) 14)
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index b3c737979..b963f0119 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -113,6 +113,8 @@
113 <string name="install_game_content_success_install">%1$d installed successfully</string> 113 <string name="install_game_content_success_install">%1$d installed successfully</string>
114 <string name="install_game_content_success_overwrite">%1$d overwritten successfully</string> 114 <string name="install_game_content_success_overwrite">%1$d overwritten successfully</string>
115 <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> 115 <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
116 <string name="custom_driver_not_supported">Custom drivers not supported</string>
117 <string name="custom_driver_not_supported_description">Custom driver loading isn\'t currently supported for this device.\nCheck this option again in the future to see if support was added!</string>
116 118
117 <!-- About screen strings --> 119 <!-- About screen strings -->
118 <string name="gaia_is_not_real">Gaia isn\'t real</string> 120 <string name="gaia_is_not_real">Gaia isn\'t real</string>