54 lines
1.6 KiB
Kotlin
54 lines
1.6 KiB
Kotlin
package cash.z.android.wallet.ui.fragment
|
|
|
|
import android.os.Bundle
|
|
import android.view.View
|
|
import android.widget.ProgressBar
|
|
import androidx.annotation.IdRes
|
|
import cash.z.android.wallet.ui.presenter.ProgressPresenter
|
|
import cash.z.android.wallet.ui.util.AnimatorCompleteListener
|
|
import kotlinx.coroutines.launch
|
|
|
|
abstract class ProgressFragment(@IdRes private val progressBarId: Int) : BaseFragment(),
|
|
ProgressPresenter.ProgressView {
|
|
|
|
private lateinit var progressPresenter: ProgressPresenter
|
|
private lateinit var progressBar: ProgressBar
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
progressBar = view.findViewById(progressBarId)
|
|
}
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
super.onActivityCreated(savedInstanceState)
|
|
progressPresenter = ProgressPresenter(this, mainActivity.synchronizer)
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
launch {
|
|
progressPresenter.start()
|
|
}
|
|
}
|
|
|
|
override fun onPause() {
|
|
super.onPause()
|
|
progressPresenter.stop()
|
|
}
|
|
|
|
override fun showProgress(progress: Int) {
|
|
if (progress >= 100) {
|
|
onProgressComplete()
|
|
progressBar.animate().alpha(0.0f).apply {
|
|
duration = 250L
|
|
setListener(AnimatorCompleteListener {
|
|
progressBar.visibility = View.GONE
|
|
})
|
|
}
|
|
}
|
|
progressBar.progress = progress
|
|
}
|
|
|
|
open fun onProgressComplete() {}
|
|
}
|