android: Fix cancel behavior on indeterminate progress dialog fragment

The dialog would previously dismiss immediately when it should stay alive until the task is cancelled completely.
This commit is contained in:
Charles Lombardo 2023-09-26 13:27:28 -04:00
parent c8673a16bb
commit 95a31b8887
1 changed files with 14 additions and 4 deletions

View File

@ -4,12 +4,12 @@
package org.yuzu.yuzu_emu.fragments
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
@ -39,9 +39,7 @@ class IndeterminateProgressDialogFragment : DialogFragment() {
.setView(binding.root)
if (cancellable) {
dialog.setNegativeButton(android.R.string.cancel) { _: DialogInterface, _: Int ->
taskViewModel.setCancelled(true)
}
dialog.setNegativeButton(android.R.string.cancel, null)
}
val alertDialog = dialog.create()
@ -98,6 +96,18 @@ class IndeterminateProgressDialogFragment : DialogFragment() {
}
}
// By default, the ProgressDialog will immediately dismiss itself upon a button being pressed.
// Setting the OnClickListener again after the dialog is shown overrides this behavior.
override fun onResume() {
super.onResume()
val alertDialog = dialog as AlertDialog
val negativeButton = alertDialog.getButton(Dialog.BUTTON_NEGATIVE)
negativeButton.setOnClickListener {
alertDialog.setTitle(getString(R.string.cancelling))
taskViewModel.setCancelled(true)
}
}
companion object {
const val TAG = "IndeterminateProgressDialogFragment"