package org.mosad.teapod.ui.components import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout import org.mosad.teapod.databinding.PlayerEpisodesListBinding import org.mosad.teapod.ui.activity.player.PlayerViewModel import org.mosad.teapod.util.adapter.EpisodeItemAdapter class EpisodesListPlayer @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, model: PlayerViewModel? = null ) : LinearLayout(context, attrs, defStyleAttr) { private val binding = PlayerEpisodesListBinding.inflate(LayoutInflater.from(context), this, true) var onViewRemovedAction: (() -> Unit)? = null // TODO find a better solution for this init { binding.buttonCloseEpisodesList.setOnClickListener { (this.parent as ViewGroup).removeView(this) onViewRemovedAction?.invoke() } model?.let { val adapterRecEpisodes = EpisodeItemAdapter( model.episodes.items, null, mapOf(), EpisodeItemAdapter.OnClickListener { episode -> (this.parent as ViewGroup).removeView(this) model.setCurrentEpisode(episode.id, startPlayback = true) }, EpisodeItemAdapter.ViewType.PLAYER ) // episodeNumber starts at 1, we need the episode index -> - 1 adapterRecEpisodes.currentSelected = model.currentEpisode.episodeNumber?.minus(1) ?: 0 binding.recyclerEpisodesPlayer.adapter = adapterRecEpisodes binding.recyclerEpisodesPlayer.scrollToPosition(adapterRecEpisodes.currentSelected) } } }