7 changed files with 86 additions and 62 deletions
@ -0,0 +1,68 @@
|
||||
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, |
||||
mapOf(), |
||||
EpisodeItemAdapter.OnClickListener { episode -> |
||||
dismiss() |
||||
model.setCurrentEpisode(episode.id, startPlayback = true) |
||||
}, |
||||
EpisodeItemAdapter.ViewType.PLAYER |
||||
) |
||||
|
||||
// episodeNumber starts at 1, we need the episode index -> - 1 |
||||
adapterRecEpisodes.currentSelected = model.currentEpisode.episodeNumber?.minus(1) ?: 0 |
||||
|
||||
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() |
||||
} |
||||
} |
@ -1,48 +0,0 @@
|
||||
package org.mosad.teapod.ui.components |
||||
|
||||
import android.content.Context |
||||
import android.util.AttributeSet |
||||
import android.view.LayoutInflater |
||||
import android.view.ViewGroup |
||||
import android.widget.LinearLayout |
||||
import org.mosad.teapod.databinding.PlayerEpisodesListBinding |
||||
import org.mosad.teapod.ui.activity.player.PlayerViewModel |
||||
import org.mosad.teapod.util.adapter.EpisodeItemAdapter |
||||
|
||||
class EpisodesListPlayer @JvmOverloads constructor( |
||||
context: Context, |
||||
attrs: AttributeSet? = null, |
||||
defStyleAttr: Int = 0, |
||||
model: PlayerViewModel? = null |
||||
) : LinearLayout(context, attrs, defStyleAttr) { |
||||
|
||||
private val binding = PlayerEpisodesListBinding.inflate(LayoutInflater.from(context), this, true) |
||||
var onViewRemovedAction: (() -> Unit)? = null // TODO find a better solution for this |
||||
|
||||
init { |
||||
binding.buttonCloseEpisodesList.setOnClickListener { |
||||
(this.parent as ViewGroup).removeView(this) |
||||
onViewRemovedAction?.invoke() |
||||
} |
||||
|
||||
model?.let { |
||||
val adapterRecEpisodes = EpisodeItemAdapter( |
||||
model.episodes.items, |
||||
null, |
||||
mapOf(), |
||||
EpisodeItemAdapter.OnClickListener { episode -> |
||||
(this.parent as ViewGroup).removeView(this) |
||||
model.setCurrentEpisode(episode.id, startPlayback = true) |
||||
}, |
||||
EpisodeItemAdapter.ViewType.PLAYER |
||||
) |
||||
|
||||
// episodeNumber starts at 1, we need the episode index -> - 1 |
||||
adapterRecEpisodes.currentSelected = model.currentEpisode.episodeNumber?.minus(1) ?: 0 |
||||
|
||||
binding.recyclerEpisodesPlayer.adapter = adapterRecEpisodes |
||||
binding.recyclerEpisodesPlayer.scrollToPosition(adapterRecEpisodes.currentSelected) |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue