2021-01-31 22:11:08 +01:00
package org.mosad.teapod.ui.activity.main.fragments
2021-01-29 21:55:01 +01:00
import android.os.Bundle
2021-01-31 21:05:43 +01:00
import android.util.Log
2021-01-29 21:55:01 +01:00
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
2021-01-31 22:11:08 +01:00
import org.mosad.teapod.ui.activity.main.MainActivity
import org.mosad.teapod.ui.activity.main.viewmodel.MediaFragmentViewModel
2021-01-29 21:55:01 +01:00
import org.mosad.teapod.databinding.FragmentMediaEpisodesBinding
2021-01-31 21:05:43 +01:00
import org.mosad.teapod.util.Episode
2021-01-29 21:55:01 +01:00
import org.mosad.teapod.util.adapter.EpisodeItemAdapter
2021-01-31 21:05:43 +01:00
class MediaFragmentEpisodes : Fragment ( ) {
2021-01-29 21:55:01 +01:00
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 )
adapterRecEpisodes = EpisodeItemAdapter ( model . media . episodes )
binding . recyclerEpisodes . adapter = adapterRecEpisodes
// set onItemClick only in adapter is initialized
if ( this :: adapterRecEpisodes . isInitialized ) {
adapterRecEpisodes . onImageClick = { _ , position ->
2021-01-31 21:05:43 +01:00
playEpisode ( model . media . episodes [ position ] )
2021-01-29 21:55:01 +01:00
}
}
}
override fun onResume ( ) {
super . onResume ( )
2021-01-31 21:05:43 +01:00
// if adapterRecEpisodes is initialized, update the watched state for the episodes
2021-01-29 21:55:01 +01:00
if ( this :: adapterRecEpisodes . isInitialized ) {
model . media . episodes . forEachIndexed { index , episode ->
adapterRecEpisodes . updateWatchedState ( episode . watched , index )
}
adapterRecEpisodes . notifyDataSetChanged ( )
}
}
2021-01-31 21:05:43 +01:00
private fun playEpisode ( ep : Episode ) {
( activity as MainActivity ) . startPlayer ( model . media . id , ep . id )
Log . d ( javaClass . name , " Started Player with episodeId: ${ep.id} " )
model . updateNextEpisode ( ) // set the correct next episode
}
2021-01-29 21:55:01 +01:00
}