|
|
|
@ -1,22 +1,24 @@
|
|
|
|
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
|
|
package org.yuzu.yuzu_emu.fragments
|
|
|
|
|
|
|
|
|
|
import android.app.Dialog
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.widget.Toast
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
|
import androidx.fragment.app.DialogFragment
|
|
|
|
|
import androidx.fragment.app.activityViewModels
|
|
|
|
|
import androidx.lifecycle.ViewModelProvider
|
|
|
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
|
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
|
|
|
|
|
import org.yuzu.yuzu_emu.model.TaskViewModel
|
|
|
|
|
import java.io.Serializable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IndeterminateProgressDialogFragment : DialogFragment() {
|
|
|
|
|
private lateinit var taskViewModel: TaskViewModel
|
|
|
|
|
private val taskViewModel: TaskViewModel by activityViewModels()
|
|
|
|
|
|
|
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
|
|
|
taskViewModel = ViewModelProvider(requireActivity())[TaskViewModel::class.java]
|
|
|
|
|
|
|
|
|
|
val titleId = requireArguments().getInt(TITLE)
|
|
|
|
|
|
|
|
|
|
val progressBinding = DialogProgressBarBinding.inflate(layoutInflater)
|
|
|
|
@ -42,11 +44,7 @@ class IndeterminateProgressDialogFragment : DialogFragment() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (taskViewModel.isRunning.value == false) {
|
|
|
|
|
val task = requireArguments().getSerializable(TASK) as? () -> Any
|
|
|
|
|
if (task != null) {
|
|
|
|
|
taskViewModel.task = task
|
|
|
|
|
taskViewModel.runTask()
|
|
|
|
|
}
|
|
|
|
|
taskViewModel.runTask()
|
|
|
|
|
}
|
|
|
|
|
return dialog
|
|
|
|
|
}
|
|
|
|
@ -55,18 +53,18 @@ class IndeterminateProgressDialogFragment : DialogFragment() {
|
|
|
|
|
const val TAG = "IndeterminateProgressDialogFragment"
|
|
|
|
|
|
|
|
|
|
private const val TITLE = "Title"
|
|
|
|
|
private const val TASK = "Task"
|
|
|
|
|
|
|
|
|
|
fun newInstance(
|
|
|
|
|
activity: AppCompatActivity,
|
|
|
|
|
titleId: Int,
|
|
|
|
|
task: () -> Any
|
|
|
|
|
): IndeterminateProgressDialogFragment {
|
|
|
|
|
val dialog = IndeterminateProgressDialogFragment()
|
|
|
|
|
val args = Bundle()
|
|
|
|
|
ViewModelProvider(activity)[TaskViewModel::class.java].task = task
|
|
|
|
|
args.putInt(TITLE, titleId)
|
|
|
|
|
args.putSerializable(TASK, task as Serializable)
|
|
|
|
|
dialog.arguments = args
|
|
|
|
|
return dialog
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|