diff options
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt')
-rw-r--r-- | src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt | 62 |
1 files changed, 50 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 7c8a37855..57bef553a 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 @@ -14,7 +14,6 @@ import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible -import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController @@ -38,9 +37,12 @@ class SetupFragment : Fragment() { private lateinit var mainActivity: MainActivity + private lateinit var hasBeenWarned: BooleanArray + companion object { const val KEY_NEXT_VISIBILITY = "NextButtonVisibility" const val KEY_BACK_VISIBILITY = "BackButtonVisibility" + const val KEY_HAS_BEEN_WARNED = "HasBeenWarned" } override fun onCreate(savedInstanceState: Bundle?) { @@ -84,36 +86,51 @@ class SetupFragment : Fragment() { R.string.welcome_description, 0, true, - R.string.get_started - ) { pageForward() }, + R.string.get_started, + { pageForward() }, + false + ), SetupPage( R.drawable.ic_key, R.string.keys, R.string.keys_description, R.drawable.ic_add, true, - R.string.select_keys - ) { mainActivity.getProdKey.launch(arrayOf("*/*")) }, + R.string.select_keys, + { mainActivity.getProdKey.launch(arrayOf("*/*")) }, + true, + R.string.install_prod_keys_warning, + R.string.install_prod_keys_warning_description, + R.string.install_prod_keys_warning_help + ), SetupPage( R.drawable.ic_controller, R.string.games, R.string.games_description, R.drawable.ic_add, true, - R.string.add_games - ) { mainActivity.getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) }, + R.string.add_games, + { mainActivity.getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) }, + true, + R.string.add_games_warning, + R.string.add_games_warning_description, + 0 + ), SetupPage( R.drawable.ic_check, R.string.done, R.string.done_description, R.drawable.ic_arrow_forward, false, - R.string.text_continue - ) { finishSetup() } + R.string.text_continue, + { finishSetup() }, + false + ) ) binding.viewPager2.apply { adapter = SetupAdapter(requireActivity() as AppCompatActivity, pages) offscreenPageLimit = 2 + isUserInputEnabled = false } binding.viewPager2.registerOnPageChangeCallback(object : OnPageChangeCallback() { @@ -138,12 +155,26 @@ class SetupFragment : Fragment() { } }) - binding.buttonNext.setOnClickListener { pageForward() } + 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() + } + } binding.buttonBack.setOnClickListener { pageBackward() } if (savedInstanceState != null) { val nextIsVisible = savedInstanceState.getBoolean(KEY_NEXT_VISIBILITY) val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY) + hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!! if (nextIsVisible) { binding.buttonNext.visibility = View.VISIBLE @@ -151,6 +182,8 @@ class SetupFragment : Fragment() { if (backIsVisible) { binding.buttonBack.visibility = View.VISIBLE } + } else { + hasBeenWarned = BooleanArray(pages.size) } setInsets() @@ -160,6 +193,7 @@ class SetupFragment : Fragment() { super.onSaveInstanceState(outState) outState.putBoolean(KEY_NEXT_VISIBILITY, binding.buttonNext.isVisible) outState.putBoolean(KEY_BACK_VISIBILITY, binding.buttonBack.isVisible) + outState.putBooleanArray(KEY_HAS_BEEN_WARNED, hasBeenWarned) } override fun onDestroyView() { @@ -201,14 +235,18 @@ class SetupFragment : Fragment() { } } - private fun pageForward() { + fun pageForward() { binding.viewPager2.currentItem = binding.viewPager2.currentItem + 1 } - private fun pageBackward() { + fun pageBackward() { binding.viewPager2.currentItem = binding.viewPager2.currentItem - 1 } + fun setPageWarned(page: Int) { + hasBeenWarned[page] = true + } + private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view: View, windowInsets: WindowInsetsCompat -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) |