Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Intent
- import android.net.Uri
- import android.view.MotionEvent.ACTION_DOWN
- import android.view.View
- import android.widget.ProgressBar
- import android.widget.Toast
- import androidx.core.net.toUri
- import androidx.lifecycle.Observer
- import androidx.navigation.fragment.findNavController
- import androidx.navigation.fragment.navArgs
- import kotlinx.android.synthetic.main.fragment_trainers_details.*
- import ua.com.fitness.R
- import ua.com.fitness.common.contracts.BottomNavigationContract
- import ua.com.fitness.common.contracts.ToolbarContract
- import ua.com.fitness.extensions.getPhotoUrl
- import ua.com.fitness.extensions.loadImage
- import ua.com.fitness.models.Trainer
- import ua.com.fitness.ui.base.BaseFragment
- class TrainersDetailsFragment : BaseFragment<TrainersDetailsViewModel>() {
- private val args by navArgs<TrainersDetailsFragmentArgs>()
- override fun onViewModelCreated() {
- observeLiveData()
- viewModel.downloadTrainerData(args.trainerUuid)
- }
- private fun observeLiveData() {
- viewModel.errorLiveData.observe(viewLifecycleOwner, Observer {
- showToast(it)
- })
- viewModel.trainersLiveData.observe(viewLifecycleOwner, Observer {
- setupUI(it)
- })
- }
- private fun setupUI(trainer: Trainer) {
- ivTrainerImage.loadImage(trainer.photo.getPhotoUrl())
- tvTrainerDescription.text = trainer.description
- tvTrainerName.text = trainer.name
- setInformationVisibility(trainer)
- ivTrainerArrowBack.setOnClickListener { findNavController().navigateUp() }
- ivTrainerToolbarBack.setOnClickListener { findNavController().navigateUp() }
- llEmailContainer.setOnClickListener { sendEmail(trainer.email ?: "") }
- llPhoneContainer.setOnClickListener { call(trainer.phone) }
- trainersContentContainer.setOnTouchListener { v, event ->
- if (event.action == ACTION_DOWN) {
- if (trainerDetailsMotionLayout.currentState == R.id.end_layout_image_trainer) {
- trainerDetailsMotionLayout.setTransition(
- R.id.end_layout_image_trainer,
- R.id.start_layout_trainer
- )
- trainerDetailsMotionLayout.setTransitionDuration(100)
- trainerDetailsMotionLayout.transitionToEnd()
- trainerDetailsMotionLayout.setTransition(
- R.id.start_layout_trainer,
- R.id.end_layout_trainer
- )
- }
- }
- true
- }
- }
- private fun sendEmail(email: String) {
- val intent = Intent(Intent.ACTION_SENDTO)
- intent.data = Uri.parse("mailto:$email")
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- if (intent.resolveActivity(activity?.packageManager!!) != null) {
- startActivity(intent)
- }else {
- showToast(getString(R.string.app_not_found))
- }
- }
- private fun call(phone: String) {
- val phoneIntent = Intent(Intent.ACTION_DIAL)
- phoneIntent.data = "tel:$phone".toUri()
- phoneIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- if (phoneIntent.resolveActivity(activity?.packageManager!!) != null) {
- startActivity(phoneIntent)
- }else {
- showToast(getString(R.string.app_not_found))
- }
- }
- private fun setInformationVisibility(trainer: Trainer) {
- if (trainer.email.isNullOrBlank()) {
- llEmailContainer.visibility = View.GONE
- } else {
- llEmailContainer.visibility = View.VISIBLE
- tvTrainerEmail.text = trainer.email
- }
- if (trainer.facebook.isNullOrBlank()) {
- llFacebookContainer.visibility = View.GONE
- } else {
- llFacebookContainer.visibility = View.VISIBLE
- tvTrainerFacebook.text = trainer.facebook
- }
- if (trainer.phone.isBlank()) {
- llPhoneContainer.visibility = View.GONE
- } else {
- llPhoneContainer.visibility = View.VISIBLE
- tvTrainerPhone.text = trainer.phone
- }
- }
- override fun setupToolbar(toolbarContract: ToolbarContract) {
- toolbarContract.setStatusBarColor(android.R.color.transparent)
- toolbarContract.setToolbarVisibility(false)
- }
- override fun setupBottomBar(bottomNavigationContract: BottomNavigationContract) {
- bottomNavigationContract.hideBottomNavigation()
- }
- override fun getViewModelClass() = TrainersDetailsViewModel::class.java
- override fun getLayout() = R.layout.fragment_trainers_details
- override fun isNeedToShowProgressBar() = true
- override fun getProgressBar(): ProgressBar = progressBarTrainersDetails
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement