package com.airbnb.lottie.samples.views

import android.content.Context
import android.util.AttributeSet
import android.widget.FrameLayout
import androidx.annotation.ColorInt
import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView
import com.airbnb.epoxy.TextProp
import com.airbnb.lottie.samples.R
import com.airbnb.lottie.samples.databinding.ItemViewShowcaseAnimationBinding
import com.airbnb.lottie.samples.utils.setImageUrl
import com.airbnb.lottie.samples.utils.viewBinding

@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class AnimationItemView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
    private val binding: ItemViewShowcaseAnimationBinding by viewBinding()

    @ModelProp
    fun setPreviewUrl(url: String?) {
        binding.imageView.setImageUrl(url)
    }

    @TextProp
    fun setTitle(title: CharSequence?) {
        binding.titleView.text = title
    }

    @ModelProp
    fun setPreviewBackgroundColor(@ColorInt bgColor: Int?) {
        if (bgColor == null) {
            binding.imageView.setBackgroundResource(R.color.loading_placeholder)
            binding.imageView.setImageDrawable(null)
        } else {
            binding.imageView.setBackgroundColor(bgColor)
        }
    }

    @ModelProp(options = [ModelProp.Option.DoNotHash])
    override fun setOnClickListener(l: OnClickListener?) {
        binding.container.setOnClickListener(l)
    }
}