2022-04-15 16:28:15 +02:00
package org.mosad.teapod.ui.activity.player.fragment
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModelProvider
import org.mosad.teapod.R
import org.mosad.teapod.databinding.PlayerEpisodesListBinding
import org.mosad.teapod.ui.activity.player.PlayerViewModel
import org.mosad.teapod.util.adapter.EpisodeItemAdapter
import org.mosad.teapod.util.hideBars
class EpisodeListDialogFragment : DialogFragment ( ) {
private lateinit var model : PlayerViewModel
private lateinit var binding : PlayerEpisodesListBinding
companion object {
const val TAG = " LanguageSettingsDialogFragment "
}
override fun onCreate ( savedInstanceState : Bundle ? ) {
super . onCreate ( savedInstanceState )
setStyle ( STYLE _NO _TITLE , R . style . FullScreenDialogStyle )
model = ViewModelProvider ( requireActivity ( ) ) [ PlayerViewModel :: class . java ]
}
override fun onCreateView ( inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ) : View {
binding = PlayerEpisodesListBinding . inflate ( inflater , container , false )
return binding . root
}
override fun onViewCreated ( view : View , savedInstanceState : Bundle ? ) {
super . onViewCreated ( view , savedInstanceState )
binding . buttonCloseEpisodesList . setOnClickListener {
dismiss ( )
}
val adapterRecEpisodes = EpisodeItemAdapter (
model . episodes . items ,
null ,
2022-04-15 17:47:17 +02:00
model . currentPlayheads . toMap ( ) ,
2022-04-15 16:28:15 +02:00
EpisodeItemAdapter . OnClickListener { episode ->
dismiss ( )
model . setCurrentEpisode ( episode . id , startPlayback = true )
} ,
EpisodeItemAdapter . ViewType . PLAYER
)
2022-07-21 18:49:29 +02:00
// get the position/index of the currently playing episode
adapterRecEpisodes . currentSelected = model . episodes . items . indexOfFirst { it . id == model . currentEpisode . id }
2022-04-15 16:28:15 +02:00
binding . recyclerEpisodesPlayer . adapter = adapterRecEpisodes
binding . recyclerEpisodesPlayer . scrollToPosition ( adapterRecEpisodes . currentSelected )
// initially hide the status and navigation bar
hideBars ( requireDialog ( ) . window , binding . root )
}
override fun onDismiss ( dialog : DialogInterface ) {
super . onDismiss ( dialog )
model . player . play ( )
}
}