2019-02-19 05:22:45 -08:00
|
|
|
package cash.z.android.wallet.ui.fragment
|
|
|
|
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import androidx.databinding.DataBindingUtil
|
|
|
|
import androidx.navigation.fragment.FragmentNavigatorExtras
|
|
|
|
import cash.z.android.wallet.R
|
|
|
|
import cash.z.android.wallet.databinding.FragmentWelcomeBinding
|
|
|
|
import dagger.Module
|
|
|
|
import dagger.android.ContributesAndroidInjector
|
|
|
|
import kotlinx.coroutines.coroutineScope
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import android.graphics.Bitmap
|
|
|
|
import android.R.attr.top
|
|
|
|
import android.R.attr.left
|
|
|
|
import android.graphics.RectF
|
|
|
|
import android.os.Parcelable
|
|
|
|
import androidx.core.app.ActivityCompat.setExitSharedElementCallback
|
|
|
|
import android.graphics.Canvas
|
|
|
|
import android.graphics.Matrix
|
|
|
|
import android.util.Log
|
|
|
|
import androidx.core.app.SharedElementCallback
|
|
|
|
import androidx.transition.TransitionInflater
|
2019-02-19 10:09:53 -08:00
|
|
|
import cash.z.android.wallet.BuildConfig
|
2019-02-19 05:22:45 -08:00
|
|
|
import cash.z.android.wallet.ui.presenter.ProgressPresenter
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
|
|
|
|
|
|
|
|
class WelcomeFragment : ProgressFragment(R.id.progress_welcome) {
|
|
|
|
|
|
|
|
private lateinit var binding: FragmentWelcomeBinding
|
|
|
|
private lateinit var progressPresenter: ProgressPresenter
|
|
|
|
|
|
|
|
//
|
|
|
|
// Lifecycle
|
|
|
|
//
|
|
|
|
|
|
|
|
override fun onCreateView(
|
|
|
|
inflater: LayoutInflater, container: ViewGroup?,
|
|
|
|
savedInstanceState: Bundle?
|
|
|
|
): View? {
|
|
|
|
setupSharedElementTransitions()
|
|
|
|
return DataBindingUtil.inflate<FragmentWelcomeBinding>(
|
|
|
|
inflater, R.layout.fragment_welcome, container, false
|
|
|
|
).let {
|
|
|
|
binding = it
|
|
|
|
it.root
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-19 10:09:53 -08:00
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
val network = if (resources.getBoolean(R.bool.is_testnet)) "Testnet 2.0.1" else "Mainnet 2.0.1"
|
|
|
|
var buildInfo = "PoC v${BuildConfig.VERSION_NAME} $network\nZcash Company - For demo purposes only"
|
|
|
|
binding.textWelcomeBuildInfo.text = buildInfo
|
|
|
|
}
|
|
|
|
|
2019-02-19 05:22:45 -08:00
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
|
|
super.onActivityCreated(savedInstanceState)
|
|
|
|
view!!.postDelayed({
|
|
|
|
launch {
|
|
|
|
onNext()
|
|
|
|
}
|
2019-02-19 10:09:53 -08:00
|
|
|
}, 5000L)
|
2019-02-19 05:22:45 -08:00
|
|
|
|
|
|
|
// this.setExitSharedElementCallback(object : SharedElementCallback() {
|
|
|
|
// override fun onCaptureSharedElementSnapshot(
|
|
|
|
// sharedElement: View,
|
|
|
|
// viewToGlobalMatrix: Matrix,
|
|
|
|
// screenBounds: RectF
|
|
|
|
// ): Parcelable? {
|
|
|
|
// val width = Math.round(screenBounds.width())
|
|
|
|
// val height = Math.round(screenBounds.height())
|
|
|
|
// var bitmap: Bitmap? = null
|
|
|
|
// if (width > 0 && height > 0) {
|
|
|
|
// val matrix = Matrix()
|
|
|
|
// matrix.set(viewToGlobalMatrix)
|
|
|
|
// matrix.postTranslate(screenBounds.left, screenBounds.top)
|
|
|
|
// bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
|
|
|
// val canvas = Canvas(bitmap)
|
|
|
|
// canvas.concat(matrix)
|
|
|
|
// sharedElement.draw(canvas)
|
|
|
|
// }
|
|
|
|
// return bitmap
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
|
|
|
mainActivity.setDrawerLocked(true)
|
|
|
|
mainActivity.setToolbarShown(false)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun setupSharedElementTransitions() {
|
|
|
|
TransitionInflater.from(mainActivity).inflateTransition(R.transition.transition_zec_sent).apply {
|
|
|
|
duration = 2500L
|
|
|
|
this@WelcomeFragment.sharedElementReturnTransition = this
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private suspend fun onNext() = coroutineScope {
|
|
|
|
val isFirstRun = mainActivity.synchronizer.isFirstRun()
|
|
|
|
val destination = if (isFirstRun) R.id.nav_firstrun_fragment else R.id.nav_sync_fragment
|
|
|
|
|
|
|
|
// var extras = with(binding) {
|
|
|
|
// listOf(progressWelcome, textProgressWelcome)
|
|
|
|
// .map { it to it.transitionName }
|
|
|
|
// .let { FragmentNavigatorExtras(*it.toTypedArray()) }
|
|
|
|
// }
|
|
|
|
val extras = FragmentNavigatorExtras(
|
|
|
|
binding.progressWelcome to binding.progressWelcome.transitionName
|
|
|
|
)
|
|
|
|
mainActivity.navController.navigate(
|
|
|
|
destination,
|
|
|
|
null,
|
|
|
|
null,
|
|
|
|
extras
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Module
|
|
|
|
abstract class WelcomeFragmentModule {
|
|
|
|
|
|
|
|
@ContributesAndroidInjector
|
|
|
|
abstract fun contributeWelcomeFragment(): WelcomeFragment
|
|
|
|
}
|