From 345fb6b22636d2677f9bcb6113d81a4833aadd5c Mon Sep 17 00:00:00 2001 From: t895 Date: Tue, 12 Dec 2023 13:58:25 -0500 Subject: android: Use confirmation dialog when deleting shader cache --- .../yuzu_emu/fragments/GamePropertiesFragment.kt | 52 +++++++++++++++------- .../java/org/yuzu/yuzu_emu/model/HomeViewModel.kt | 7 +++ src/android/app/src/main/res/values/strings.xml | 1 + 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt index e062425a1..6ede3f85c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt @@ -3,6 +3,7 @@ package org.yuzu.yuzu_emu.fragments +import android.annotation.SuppressLint import android.os.Bundle import android.text.TextUtils import android.view.LayoutInflater @@ -73,6 +74,8 @@ class GamePropertiesFragment : Fragment() { return binding.root } + // This is using the correct scope, lint is just acting up + @SuppressLint("UnsafeRepeatOnLifecycleDetector") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) homeViewModel.setNavigationVisibility(visible = false, animated = true) @@ -99,12 +102,24 @@ class GamePropertiesFragment : Fragment() { reloadList() - viewLifecycleOwner.lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.STARTED) { - homeViewModel.openImportSaves.collect { - if (it) { - importSaves.launch(arrayOf("application/zip")) - homeViewModel.setOpenImportSaves(false) + viewLifecycleOwner.lifecycleScope.apply { + launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + homeViewModel.openImportSaves.collect { + if (it) { + importSaves.launch(arrayOf("application/zip")) + homeViewModel.setOpenImportSaves(false) + } + } + } + } + launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + homeViewModel.reloadPropertiesList.collect { + if (it) { + reloadList() + homeViewModel.reloadPropertiesList(false) + } } } } @@ -214,7 +229,7 @@ class GamePropertiesFragment : Fragment() { R.string.save_data_deleted_successfully, Toast.LENGTH_SHORT ).show() - reloadList() + homeViewModel.reloadPropertiesList(true) } ).show(parentFragmentManager, MessageDialogFragment.TAG) } @@ -242,13 +257,20 @@ class GamePropertiesFragment : Fragment() { } } ) { - shaderCacheDir.deleteRecursively() - Toast.makeText( - YuzuApplication.appContext, - R.string.cleared_shaders_successfully, - Toast.LENGTH_SHORT - ).show() - reloadList() + MessageDialogFragment.newInstance( + requireActivity(), + titleId = R.string.clear_shader_cache, + descriptionId = R.string.clear_shader_cache_warning_description, + positiveAction = { + shaderCacheDir.deleteRecursively() + Toast.makeText( + YuzuApplication.appContext, + R.string.cleared_shaders_successfully, + Toast.LENGTH_SHORT + ).show() + homeViewModel.reloadPropertiesList(true) + } + ).show(parentFragmentManager, MessageDialogFragment.TAG) } ) } @@ -388,7 +410,7 @@ class GamePropertiesFragment : Fragment() { getString(R.string.save_file_imported_success), Toast.LENGTH_LONG ).show() - reloadList() + homeViewModel.reloadPropertiesList(true) } cacheSaveDir.deleteRecursively() diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt index d801db105..513ac2fc5 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt @@ -28,6 +28,9 @@ class HomeViewModel : ViewModel() { private val _contentToInstall = MutableStateFlow?>(null) val contentToInstall get() = _contentToInstall.asStateFlow() + private val _reloadPropertiesList = MutableStateFlow(false) + val reloadPropertiesList get() = _reloadPropertiesList.asStateFlow() + var navigatedToSetup = false fun setNavigationVisibility(visible: Boolean, animated: Boolean) { @@ -59,4 +62,8 @@ class HomeViewModel : ViewModel() { fun setContentToInstall(documents: List?) { _contentToInstall.value = documents } + + fun reloadPropertiesList(reload: Boolean) { + _reloadPropertiesList.value = reload + } } diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 50879b3a3..c86c43df2 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -314,6 +314,7 @@ Toggle mods, updates and DLC Clear shader cache Removes all shaders built while playing this game + You will experience more stuttering as the shader cache regenerates Cleared shaders successfully Addons: %1$s Save data -- cgit v1.2.3