2021-02-06 19:02:12 +01:00
package org.mosad.teapod.ui.activity.main.fragments
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import org.mosad.teapod.ui.activity.main.MainActivity
import org.mosad.teapod.ui.activity.main.viewmodel.MediaFragmentViewModel
import org.mosad.teapod.databinding.FragmentMediaEpisodesBinding
import org.mosad.teapod.util.adapter.EpisodeItemAdapter
class MediaFragmentEpisodes : Fragment ( ) {
private lateinit var binding : FragmentMediaEpisodesBinding
private lateinit var adapterRecEpisodes : EpisodeItemAdapter
private val model : MediaFragmentViewModel by activityViewModels ( )
override fun onCreateView ( inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ) : View {
binding = FragmentMediaEpisodesBinding . inflate ( inflater , container , false )
return binding . root
}
override fun onViewCreated ( view : View , savedInstanceState : Bundle ? ) {
super . onViewCreated ( view , savedInstanceState )
2021-08-31 19:47:18 +02:00
adapterRecEpisodes = EpisodeItemAdapter ( model . media2 . playlist , model . tmdbTVSeason ?. episodes )
2021-02-06 19:02:12 +01:00
binding . recyclerEpisodes . adapter = adapterRecEpisodes
// set onItemClick only in adapter is initialized
if ( this :: adapterRecEpisodes . isInitialized ) {
adapterRecEpisodes . onImageClick = { _ , position ->
2021-08-31 19:47:18 +02:00
playEpisode ( model . media2 . playlist [ position ] . mediaId )
2021-02-06 19:02:12 +01:00
}
}
}
override fun onResume ( ) {
super . onResume ( )
// if adapterRecEpisodes is initialized, update the watched state for the episodes
if ( this :: adapterRecEpisodes . isInitialized ) {
2021-08-31 19:47:18 +02:00
model . media2 . playlist . forEachIndexed { index , episodeInfo ->
adapterRecEpisodes . updateWatchedState ( episodeInfo . watched , index )
2021-02-06 19:02:12 +01:00
}
adapterRecEpisodes . notifyDataSetChanged ( )
}
}
2021-08-31 19:47:18 +02:00
private fun playEpisode ( episodeId : Int ) {
( activity as MainActivity ) . startPlayer ( model . media2 . aodId , episodeId )
Log . d ( javaClass . name , " Started Player with episodeId: $episodeId " )
2021-02-06 19:02:12 +01:00
2021-08-31 19:47:18 +02:00
model . updateNextEpisode ( episodeId ) // set the correct next episode
2021-02-06 19:02:12 +01:00
}
}