zcash-android-wallet-zcon1/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/ProgressFragment.kt

76 lines
2.5 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.wallet.sdk.data.Synchronizer
import kotlinx.coroutines.launch
import javax.inject.Inject
abstract class ProgressFragment(
@IdRes private val progressBarId: Int
) : BaseFragment(),
ProgressPresenter.ProgressView {
@Inject
protected lateinit var synchronizer: Synchronizer
protected lateinit var progressPresenter: ProgressPresenter
private lateinit var progressBar: ProgressBar
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
progressBar = view.findViewById(progressBarId)
// progressBar.visibility = View.INVISIBLE
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
progressPresenter = ProgressPresenter(this, 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().(0.0f).apply {
// duration = 250L
// setListener(AnimatorCompleteListener {
progressBar.visibility = View.GONE
// })
// }
} else if (progress > 0 && progressBar.visibility != View.VISIBLE) {
progressBar.visibility = View.VISIBLE
}
progressBar.progress = progress
}
// TODO: replace this quick and dirty logic with something permanent
open fun getProgressText(progress: Int): String {
if (mainActivity == null) return ""
// cycle twice
val factor = 100 / (mainActivity!!.loadMessages.size * 2)
val index = (progress/factor).rem(mainActivity!!.loadMessages.size)
var message = "$progress% ${mainActivity?.nextLoadMessage(index)}"
if (progress > 98) message = "Done!"
if (progress >= 50) message = message.replace("Zooko", "Zooko AGAIN", true).replace("Learning to spell", "Double-checking the spelling of").replace("the kool", "MORE kool", true).replace("Making the sausage", "Getting a little hangry by now!", true)
return message
}
open fun onProgressComplete() {}
}