From 274b2be24fb37385bca799491a98c1f5f1b65a91 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Sat, 29 Apr 2023 01:47:13 -0400 Subject: [PATCH] android: Setup screen hotfix Added help button link for add games warning and a check for whether a task was completed on a given screen. --- .../yuzu/yuzu_emu/fragments/SetupFragment.kt | 40 ++++++++++++++----- .../java/org/yuzu/yuzu_emu/model/SetupPage.kt | 3 +- .../app/src/main/res/values/strings.xml | 1 + 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt index 57bef553a..2af78b02c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt @@ -28,6 +28,9 @@ import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.model.SetupPage import org.yuzu.yuzu_emu.ui.main.MainActivity +import org.yuzu.yuzu_emu.utils.DirectoryInitialization +import org.yuzu.yuzu_emu.utils.GameHelper +import java.io.File class SetupFragment : Fragment() { private var _binding: FragmentSetupBinding? = null @@ -101,7 +104,8 @@ class SetupFragment : Fragment() { true, R.string.install_prod_keys_warning, R.string.install_prod_keys_warning_description, - R.string.install_prod_keys_warning_help + R.string.install_prod_keys_warning_help, + { File(DirectoryInitialization.userDirectory + "/keys/prod.keys").exists() } ), SetupPage( R.drawable.ic_controller, @@ -114,7 +118,12 @@ class SetupFragment : Fragment() { true, R.string.add_games_warning, R.string.add_games_warning_description, - 0 + R.string.add_games_warning_help, + { + val preferences = + PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + preferences.getString(GameHelper.KEY_GAME_PATH, "")!!.isNotEmpty() + } ), SetupPage( R.drawable.ic_check, @@ -158,16 +167,25 @@ class SetupFragment : Fragment() { binding.buttonNext.setOnClickListener { val index = binding.viewPager2.currentItem val currentPage = pages[index] - if (currentPage.hasWarning && !hasBeenWarned[index]) { - SetupWarningDialogFragment.newInstance( - currentPage.warningTitleId, - currentPage.warningDescriptionId, - currentPage.warningHelpLinkId, - index - ).show(childFragmentManager, SetupWarningDialogFragment.TAG) - } else { - pageForward() + + // Checks if the user has completed the task on the current page + if (currentPage.hasWarning) { + if (currentPage.taskCompleted.invoke()) { + pageForward() + return@setOnClickListener + } + + if (!hasBeenWarned[index]) { + SetupWarningDialogFragment.newInstance( + currentPage.warningTitleId, + currentPage.warningDescriptionId, + currentPage.warningHelpLinkId, + index + ).show(childFragmentManager, SetupWarningDialogFragment.TAG) + return@setOnClickListener + } } + pageForward() } binding.buttonBack.setOnClickListener { pageBackward() } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt index abe572a02..a0c878e1c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt @@ -14,5 +14,6 @@ data class SetupPage( val hasWarning: Boolean, val warningTitleId: Int = 0, val warningDescriptionId: Int = 0, - val warningHelpLinkId: Int = 0 + val warningHelpLinkId: Int = 0, + val taskCompleted: () -> Boolean = { true } ) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 6448a8d3f..5df65d084 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -31,6 +31,7 @@ Select your games folder Skip selecting games folder? Games won\'t be displayed in the Games list if a folder isn\'t selected. + https://yuzu-emu.org/help/quickstart/#dumping-games Search Games Games directory selected Install Prod.keys