package com.airbnb.lottie.samples.views

import android.content.Context
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.util.AttributeSet
import com.airbnb.epoxy.EpoxyController
import com.airbnb.epoxy.EpoxyRecyclerView
import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView
import com.airbnb.lottie.samples.R
import com.airbnb.lottie.samples.model.ShowcaseItem

@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class ShowcaseCarousel @JvmOverloads constructor(
        context: Context,
        attrs: AttributeSet? = null,
        defStyleAttr: Int = 0
) : EpoxyRecyclerView(context, attrs, defStyleAttr), EpoxyRecyclerView.ModelBuilderCallback {

    private var items: List<ShowcaseItem>? = null

    init {
        layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
        buildModelsWith(this)
        val sidePadding = resources.getDimensionPixelSize(R.dimen.showcase_carousel_padding)
        setPadding(sidePadding, 0, sidePadding, 0)
    }

    @ModelProp
    fun setShowcaseItems(items: List<ShowcaseItem>) {
        this.items = items
        requestModelBuild()
    }

    override fun buildModels(controller: EpoxyController) {
        items?.forEach {
            ShowcaseDemoItemViewModel_()
                    .id(it.titleRes)
                    .showcaseItem(it)
                    .addTo(controller)
        }
    }
}