From 274b2be24fb37385bca799491a98c1f5f1b65a91 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
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 57bef553a2..2af78b02c7 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 abe572a020..a0c878e1ca 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 6448a8d3f7..5df65d0841 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 @@
     <string name="add_games_description">Select your games folder</string>
     <string name="add_games_warning">Skip selecting games folder?</string>
     <string name="add_games_warning_description">Games won\'t be displayed in the Games list if a folder isn\'t selected.</string>
+    <string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
     <string name="home_search_games">Search Games</string>
     <string name="games_dir_selected">Games directory selected</string>
     <string name="install_prod_keys">Install Prod.keys</string>