mirror of https://github.com/nextcloud/android
82 lines
3.1 KiB
Kotlin
82 lines
3.1 KiB
Kotlin
/*
|
|
* Nextcloud - Android Client
|
|
*
|
|
* SPDX-FileCopyrightText: 2023 Alper Ozturk <alper_ozturk@proton.me>
|
|
* SPDX-FileCopyrightText: 2015 David A. Velasco <dvelasco@solidgear.es>
|
|
* SPDX-FileCopyrightText: 2015 ownCloud Inc.
|
|
* SPDX-License-Identifier: GPL-2.0-only AND AGPL-3.0-or-later
|
|
*/
|
|
@file:Suppress("DEPRECATION")
|
|
|
|
package com.owncloud.android.ui.dialog
|
|
|
|
import android.app.Dialog
|
|
import android.app.ProgressDialog
|
|
import android.content.DialogInterface
|
|
import android.os.Bundle
|
|
import android.view.KeyEvent
|
|
import android.widget.ProgressBar
|
|
import androidx.fragment.app.DialogFragment
|
|
import com.nextcloud.client.di.Injectable
|
|
import com.owncloud.android.R
|
|
import com.owncloud.android.utils.theme.ViewThemeUtils
|
|
import javax.inject.Inject
|
|
|
|
class IndeterminateProgressDialog : DialogFragment(), Injectable {
|
|
|
|
@JvmField
|
|
@Inject
|
|
var viewThemeUtils: ViewThemeUtils? = null
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
// / create indeterminate progress dialog
|
|
val progressDialog = ProgressDialog(requireActivity(), R.style.ProgressDialogTheme)
|
|
progressDialog.isIndeterminate = true
|
|
progressDialog.setOnShowListener {
|
|
val v = progressDialog.findViewById<ProgressBar>(android.R.id.progress)
|
|
viewThemeUtils?.platform?.tintDrawable(requireContext(), v.indeterminateDrawable)
|
|
}
|
|
|
|
// / set message
|
|
val messageId = requireArguments().getInt(ARG_MESSAGE_ID, R.string.placeholder_sentence)
|
|
progressDialog.setMessage(getString(messageId))
|
|
|
|
// / set cancellation behavior
|
|
val cancelable = requireArguments().getBoolean(ARG_CANCELABLE, false)
|
|
if (!cancelable) {
|
|
progressDialog.setCancelable(false)
|
|
// disable the back button
|
|
val keyListener =
|
|
DialogInterface.OnKeyListener { _, keyCode, _ -> keyCode == KeyEvent.KEYCODE_BACK }
|
|
progressDialog.setOnKeyListener(keyListener)
|
|
}
|
|
return progressDialog
|
|
}
|
|
|
|
companion object {
|
|
private val ARG_MESSAGE_ID = IndeterminateProgressDialog::class.java.canonicalName?.plus(".ARG_MESSAGE_ID")
|
|
private val ARG_CANCELABLE = IndeterminateProgressDialog::class.java.canonicalName?.plus(".ARG_CANCELABLE")
|
|
|
|
/**
|
|
* Public factory method to get dialog instances.
|
|
*
|
|
* @param messageId Resource id for a message to show in the dialog.
|
|
* @param cancelable If 'true', the dialog can be cancelled by the user input (BACK button, touch outside...)
|
|
* @return New dialog instance, ready to show.
|
|
*/
|
|
@JvmStatic
|
|
fun newInstance(messageId: Int, cancelable: Boolean): IndeterminateProgressDialog {
|
|
val fragment = IndeterminateProgressDialog()
|
|
fragment.setStyle(STYLE_NO_FRAME, R.style.ownCloud_AlertDialog)
|
|
val args = Bundle()
|
|
args.putInt(ARG_MESSAGE_ID, messageId)
|
|
args.putBoolean(ARG_CANCELABLE, cancelable)
|
|
fragment.arguments = args
|
|
return fragment
|
|
}
|
|
}
|
|
}
|