2020-10-11 10:02:00 +02:00
package org.mosad.teapod.ui
import android.os.Bundle
2020-10-11 23:16:47 +02:00
import android.util.Log
2020-10-11 10:02:00 +02:00
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
2020-10-11 23:16:47 +02:00
import android.widget.ArrayAdapter
2020-10-11 10:02:00 +02:00
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.fragment_media.*
2020-10-11 13:18:20 +02:00
import org.mosad.teapod.MainActivity
2020-10-11 10:02:00 +02:00
import org.mosad.teapod.R
2020-10-11 23:16:47 +02:00
import org.mosad.teapod.util.DataTypes.MediaType
2020-10-11 10:02:00 +02:00
import org.mosad.teapod.util.GUIMedia
2020-10-11 23:16:47 +02:00
import org.mosad.teapod.util.StreamMedia
2020-10-11 10:02:00 +02:00
2020-10-11 23:16:47 +02:00
class MediaFragment ( private val guiMedia : GUIMedia , private val streamMedia : StreamMedia ) : Fragment ( ) {
private lateinit var adapterEpisodes : ArrayAdapter < String >
2020-10-11 10:02:00 +02:00
override fun onCreateView ( inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ) : View ? {
return inflater . inflate ( R . layout . fragment _media , container , false )
}
override fun onViewCreated ( view : View , savedInstanceState : Bundle ? ) {
super . onViewCreated ( view , savedInstanceState )
2020-10-11 23:16:47 +02:00
// generic gui
Glide . with ( requireContext ( ) ) . load ( guiMedia . posterLink ) . into ( image _poster )
text _title . text = guiMedia . title
text _desc . text = guiMedia . shortDesc
// specific gui
if ( streamMedia . type == MediaType . TVSHOW ) {
val episodes = streamMedia . streams . mapIndexed { index , _ ->
" ${guiMedia.title} - Ep. ${index + 1} "
}
adapterEpisodes = ArrayAdapter ( requireContext ( ) , android . R . layout . simple _list _item _1 , episodes )
list _episodes . adapter = adapterEpisodes
} else if ( streamMedia . type == MediaType . MOVIE ) {
list _episodes . visibility = View . GONE
}
2020-10-11 10:02:00 +02:00
2020-10-11 23:16:47 +02:00
println ( " media streams: ${streamMedia.streams} " )
2020-10-11 10:02:00 +02:00
initActions ( )
}
private fun initActions ( ) {
2020-10-11 23:16:47 +02:00
button _play . setOnClickListener {
onClickButtonPlay ( )
}
list _episodes . setOnItemClickListener { _ , _ , position , _ ->
playStream ( streamMedia . streams [ position ] )
}
2020-10-11 10:02:00 +02:00
}
private fun onClickButtonPlay ( ) {
2020-10-11 23:16:47 +02:00
when ( streamMedia . type ) {
MediaType . MOVIE -> playStream ( streamMedia . streams . first ( ) )
MediaType . TVSHOW -> playStream ( streamMedia . streams . first ( ) )
MediaType . OTHER -> Log . e ( javaClass . name , " Wrong Type, please report this issue. " )
}
}
2020-10-11 10:02:00 +02:00
2020-10-11 23:16:47 +02:00
private fun playStream ( url : String ) {
2020-10-11 13:18:20 +02:00
val mainActivity = activity as MainActivity
2020-10-11 23:16:47 +02:00
mainActivity . startPlayer ( url )
2020-10-11 10:02:00 +02:00
}
}