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 d3df3bc81d..aadc445f98 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 import androidx.recyclerview.widget.RecyclerView import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding +import org.yuzu.yuzu_emu.fragments.MessageDialogFragment import org.yuzu.yuzu_emu.model.HomeSetting class HomeSettingAdapter(private val activity: AppCompatActivity, var options: List) : @@ -34,7 +35,14 @@ class HomeSettingAdapter(private val activity: AppCompatActivity, var options: L override fun onClick(view: View) { val holder = view.tag as HomeOptionViewHolder - holder.option.onClick.invoke() + if (holder.option.isEnabled.invoke()) { + holder.option.onClick.invoke() + } else { + MessageDialogFragment.newInstance( + holder.option.disabledTitleId, + holder.option.disabledMessageId + ).show(activity.supportFragmentManager, MessageDialogFragment.TAG) + } } inner class HomeOptionViewHolder(val binding: CardHomeOptionBinding) : @@ -65,6 +73,12 @@ class HomeSettingAdapter(private val activity: AppCompatActivity, var options: L R.drawable.premium_background ) } + + if (!option.isEnabled.invoke()) { + binding.optionTitle.alpha = 0.5f + binding.optionDescription.alpha = 0.5f + binding.optionIcon.alpha = 0.5f + } } } } 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 5a36ffad4b..c001af892a 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() { HomeSetting( R.string.advanced_settings, R.string.settings_description, - R.drawable.ic_settings - ) { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") } + R.drawable.ic_settings, + { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") } + ) ) add( HomeSetting( R.string.open_user_folder, R.string.open_user_folder_description, - R.drawable.ic_folder_open - ) { openFileManager() } + R.drawable.ic_folder_open, + { openFileManager() } + ) ) add( HomeSetting( R.string.preferences_theme, R.string.theme_and_color_description, - R.drawable.ic_palette - ) { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") } - ) - - if (GpuDriverHelper.supportsCustomDriverLoading()) { - add( - HomeSetting( - R.string.install_gpu_driver, - R.string.install_gpu_driver_description, - R.drawable.ic_exit - ) { driverInstaller() } + R.drawable.ic_palette, + { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") } ) - } - + ) + add( + HomeSetting( + R.string.install_gpu_driver, + R.string.install_gpu_driver_description, + R.drawable.ic_exit, + { driverInstaller() }, + { GpuDriverHelper.supportsCustomDriverLoading() }, + R.string.custom_driver_not_supported, + R.string.custom_driver_not_supported_description + ) + ) add( HomeSetting( R.string.install_amiibo_keys, R.string.install_amiibo_keys_description, - R.drawable.ic_nfc - ) { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) } + R.drawable.ic_nfc, + { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) } + ) ) add( HomeSetting( R.string.install_game_content, R.string.install_game_content_description, - R.drawable.ic_system_update_alt - ) { mainActivity.installGameUpdate.launch(arrayOf("*/*")) } + R.drawable.ic_system_update_alt, + { mainActivity.installGameUpdate.launch(arrayOf("*/*")) } + ) ) add( HomeSetting( R.string.select_games_folder, R.string.select_games_folder_description, - R.drawable.ic_add - ) { - mainActivity.getGamesDirectory.launch( - Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data - ) - } + R.drawable.ic_add, + { + mainActivity.getGamesDirectory.launch( + Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data + ) + } + ) ) add( HomeSetting( R.string.manage_save_data, R.string.import_export_saves_description, - R.drawable.ic_save - ) { - ImportExportSavesFragment().show( - parentFragmentManager, - ImportExportSavesFragment.TAG - ) - } + R.drawable.ic_save, + { + ImportExportSavesFragment().show( + parentFragmentManager, + ImportExportSavesFragment.TAG + ) + } + ) ) add( HomeSetting( R.string.install_prod_keys, R.string.install_prod_keys_description, - R.drawable.ic_unlock - ) { mainActivity.getProdKey.launch(arrayOf("*/*")) } + R.drawable.ic_unlock, + { mainActivity.getProdKey.launch(arrayOf("*/*")) } + ) ) add( HomeSetting( R.string.install_firmware, R.string.install_firmware_description, - R.drawable.ic_firmware - ) { mainActivity.getFirmware.launch(arrayOf("application/zip")) } + R.drawable.ic_firmware, + { mainActivity.getFirmware.launch(arrayOf("application/zip")) } + ) ) add( HomeSetting( R.string.share_log, R.string.share_log_description, - R.drawable.ic_log - ) { shareLog() } + R.drawable.ic_log, + { shareLog() } + ) ) add( HomeSetting( R.string.about, R.string.about_description, - R.drawable.ic_info_outline - ) { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - parentFragmentManager.primaryNavigationFragment?.findNavController() - ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment) - } + R.drawable.ic_info_outline, + { + exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + parentFragmentManager.primaryNavigationFragment?.findNavController() + ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment) + } + ) ) } @@ -178,12 +189,13 @@ class HomeSettingsFragment : Fragment() { HomeSetting( R.string.get_early_access, R.string.get_early_access_description, - R.drawable.ic_diamond - ) { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - parentFragmentManager.primaryNavigationFragment?.findNavController() - ?.navigate(R.id.action_homeSettingsFragment_to_earlyAccessFragment) - } + R.drawable.ic_diamond, + { + exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + parentFragmentManager.primaryNavigationFragment?.findNavController() + ?.navigate(R.id.action_homeSettingsFragment_to_earlyAccessFragment) + } + ) ) } 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 7049f2fa54..522d07c37c 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( val titleId: Int, val descriptionId: Int, val iconId: Int, - val onClick: () -> Unit + val onClick: () -> Unit, + val isEnabled: () -> Boolean = { true }, + val disabledTitleId: Int = 0, + val disabledMessageId: Int = 0 ) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index b3c7379796..b963f01194 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 @@ %1$d installed successfully %1$d overwritten successfully https://yuzu-emu.org/help/quickstart/#dumping-installed-updates + Custom drivers not supported + Custom driver loading isn\'t currently supported for this device.\nCheck this option again in the future to see if support was added! Gaia isn\'t real