DroidFS/app/src/main/java/sushi/hardcore/droidfs/LoadingTask.kt

39 lines
1.3 KiB
Kotlin
Raw Normal View History

package sushi.hardcore.droidfs
2020-07-28 22:25:10 +02:00
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
2021-11-09 11:12:09 +01:00
import sushi.hardcore.droidfs.widgets.CustomAlertDialogBuilder
2020-07-28 22:25:10 +02:00
2021-11-09 11:12:09 +01:00
abstract class LoadingTask(val activity: AppCompatActivity, themeValue: String, loadingMessageResId: Int) {
2020-07-28 22:25:10 +02:00
private val dialogLoadingView = activity.layoutInflater.inflate(R.layout.dialog_loading, null)
2021-11-09 11:12:09 +01:00
private val dialogLoading: AlertDialog = CustomAlertDialogBuilder(activity, themeValue)
2020-07-28 22:25:10 +02:00
.setView(dialogLoadingView)
.setTitle(R.string.loading)
.setCancelable(false)
.create()
private var isStopped = false
2020-07-28 22:25:10 +02:00
init {
dialogLoadingView.findViewById<TextView>(R.id.text_message).text = activity.getString(loadingMessageResId)
startTask()
}
abstract fun doTask(activity: AppCompatActivity)
private fun startTask() {
dialogLoading.show()
Thread {
doTask(activity)
if (!isStopped){
dialogLoading.dismiss()
}
2020-07-28 22:25:10 +02:00
}.start()
}
2020-11-03 17:22:09 +01:00
fun stopTask(onUiThread: (() -> Unit)?){
isStopped = true
2020-07-28 22:25:10 +02:00
dialogLoading.dismiss()
onUiThread?.let {
activity.runOnUiThread {
onUiThread()
}
2020-07-28 22:25:10 +02:00
}
}
}