tv shows: play next episode, on play btn click

This commit is contained in:
Jannik 2020-11-03 18:21:18 +01:00
parent a51f4ca490
commit 1523e0235a
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
1 changed files with 30 additions and 8 deletions

View File

@ -29,7 +29,7 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
private lateinit var adapterRecEpisodes: EpisodeItemAdapter
private lateinit var viewManager: RecyclerView.LayoutManager
private lateinit var nextEpisode: Episode
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_media, container, false)
@ -76,6 +76,16 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
recycler_episodes.adapter = adapterRecEpisodes
text_episodes_or_runtime.text = getString(R.string.text_episodes_count, media.info.episodesCount)
// get next episode
nextEpisode = if (media.episodes.firstOrNull{ !it.watched } != null) {
media.episodes.first{ !it.watched }
} else {
media.episodes.first()
}
// title is the next episodes title
text_title.text = nextEpisode.title
} else if (media.type == MediaType.MOVIE) {
recycler_episodes.visibility = View.GONE
@ -91,7 +101,7 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
button_play.setOnClickListener {
when (media.type) {
MediaType.MOVIE -> playStream(media.episodes.first())
MediaType.TVSHOW -> playStream(media.episodes.first())
MediaType.TVSHOW -> playEpisode(nextEpisode)
else -> Log.e(javaClass.name, "Wrong Type: $media.type")
}
}
@ -116,16 +126,28 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
// set onItemClick only in adapter is initialized
if (this::adapterRecEpisodes.isInitialized) {
adapterRecEpisodes.onImageClick = { _, position ->
playStream(media.episodes[position])
// update watched state
AoDParser.sendCallback(media.episodes[position].watchedCallback)
adapterRecEpisodes.updateWatchedState(true, position)
adapterRecEpisodes.notifyDataSetChanged()
playEpisode(media.episodes[position])
}
}
}
private fun playEpisode(ep: Episode) {
playStream(ep)
// update watched state
AoDParser.sendCallback(ep.watchedCallback)
adapterRecEpisodes.updateWatchedState(true, media.episodes.indexOf(ep))
adapterRecEpisodes.notifyDataSetChanged()
// update nextEpisode
nextEpisode = if (media.episodes.firstOrNull{ !it.watched } != null) {
media.episodes.first{ !it.watched }
} else {
media.episodes.first()
}
text_title.text = nextEpisode.title
}
/**
* Play the media's stream
* If prefer secondary or primary is empty and secondary is present (secStreamOmU),