8 changed files with 103 additions and 24 deletions
@ -0,0 +1,57 @@ |
|||
package org.videolan.vlc.gui.tv |
|||
|
|||
import android.arch.lifecycle.Observer |
|||
import org.videolan.libvlc.MediaPlayer |
|||
import org.videolan.medialibrary.media.DummyItem |
|||
import org.videolan.vlc.PlaybackService |
|||
import org.videolan.vlc.gui.PlaybackServiceActivity |
|||
import org.videolan.vlc.media.PlaylistManager |
|||
import org.videolan.vlc.util.Constants |
|||
import org.videolan.vlc.util.EmptyPBSCallback |
|||
|
|||
|
|||
class NowPlayingDelegate(private val fragment: MainTvFragment): PlaybackService.Client.Callback, PlaybackService.Callback by EmptyPBSCallback { |
|||
private var service: PlaybackService? = null |
|||
private val helper = PlaybackServiceActivity.Helper(fragment.requireActivity(), this) |
|||
private val observer = Observer<Boolean> { |
|||
when { |
|||
it != true -> { |
|||
helper.onStop() |
|||
updateCurrent() |
|||
} |
|||
service === null -> helper.onStart() |
|||
else -> updateCurrent() |
|||
} |
|||
} |
|||
|
|||
init { |
|||
PlaylistManager.showAudioPlayer.observe(fragment, observer) |
|||
} |
|||
|
|||
fun onClear() { |
|||
PlaylistManager.showAudioPlayer.removeObserver(observer) |
|||
} |
|||
|
|||
override fun onMediaPlayerEvent(event: MediaPlayer.Event?) { |
|||
when (event?.type) { |
|||
MediaPlayer.Event.MediaChanged -> updateCurrent() |
|||
} |
|||
} |
|||
|
|||
private fun updateCurrent() { |
|||
fragment.updateAudioCategories(service?.currentMediaWrapper?.let { |
|||
DummyItem(Constants.CATEGORY_NOW_PLAYING, it.title, it.artist).apply { setArtWork(service?.coverArt) } |
|||
}) |
|||
} |
|||
|
|||
override fun onConnected(service: PlaybackService?) { |
|||
this.service = service |
|||
updateCurrent() |
|||
service?.addCallback(this) |
|||
} |
|||
|
|||
override fun onDisconnected() { |
|||
service?.removeCallback(this) |
|||
service = null |
|||
} |
|||
} |
|||
Loading…
Reference in new issue