Browse Source

fix orientation and list bug

dmnt2
Maufeat 4 days ago
parent
commit
2685e8f877
  1. 3
      src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt
  2. 4
      src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
  3. 7
      src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt

3
src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt

@ -32,8 +32,9 @@ class AddonAdapter(val addonViewModel: AddonViewModel) :
binding.addonSwitch.performClick() binding.addonSwitch.performClick()
} }
binding.title.text = model.name binding.title.text = model.name
binding.addonSwitch.isChecked = model.enabled
binding.addonSwitch.setOnCheckedChangeListener(null)
binding.addonSwitch.isChecked = model.enabled
binding.addonSwitch.setOnCheckedChangeListener { _, checked -> binding.addonSwitch.setOnCheckedChangeListener { _, checked ->
model.enabled = checked model.enabled = checked
} }

4
src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt

@ -73,7 +73,7 @@ class AddonsFragment : Fragment() {
} }
addonViewModel.addonList.collect(viewLifecycleOwner) { addonViewModel.addonList.collect(viewLifecycleOwner) {
(binding.listAddons.adapter as AddonAdapter).submitList(it)
(binding.listAddons.adapter as AddonAdapter).submitList(it.toList())
} }
addonViewModel.showModInstallPicker.collect( addonViewModel.showModInstallPicker.collect(
viewLifecycleOwner, viewLifecycleOwner,
@ -127,8 +127,10 @@ class AddonsFragment : Fragment() {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
if (!requireActivity().isChangingConfigurations) {
addonViewModel.onCloseAddons() addonViewModel.onCloseAddons()
} }
}
val installAddon = val installAddon =
registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result ->

7
src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt

@ -31,10 +31,14 @@ class AddonViewModel : ViewModel() {
val addonToDelete = _addonToDelete.asStateFlow() val addonToDelete = _addonToDelete.asStateFlow()
var game: Game? = null var game: Game? = null
private set
private val isRefreshing = AtomicBoolean(false) private val isRefreshing = AtomicBoolean(false)
fun onOpenAddons(game: Game) { fun onOpenAddons(game: Game) {
if (this.game?.programId == game.programId && _patchList.value.isNotEmpty()) {
return
}
this.game = game this.game = game
refreshAddons() refreshAddons()
} }
@ -67,6 +71,7 @@ class AddonViewModel : ViewModel() {
PatchType.Mod -> NativeLibrary.removeMod(patch.programId, patch.name) PatchType.Mod -> NativeLibrary.removeMod(patch.programId, patch.name)
PatchType.Cheat -> {} PatchType.Cheat -> {}
} }
_patchList.value.clear()
refreshAddons() refreshAddons()
} }
@ -81,7 +86,7 @@ class AddonViewModel : ViewModel() {
if (it.enabled) { if (it.enabled) {
null null
} else { } else {
it.getStorageKey() // Use storage key for proper cheat identification
it.getStorageKey()
} }
}.toTypedArray() }.toTypedArray()
) )

Loading…
Cancel
Save