2
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-09-03 16:15:18 +00:00

PlayerHolder: kotlinify optional calls

This commit is contained in:
Profpatsch
2025-05-13 17:53:43 +02:00
committed by Stypox
parent 4fd3ddf392
commit 86b27cf77d

View File

@@ -20,9 +20,7 @@ import org.schabi.newpipe.player.event.PlayerServiceEventListener
import org.schabi.newpipe.player.event.PlayerServiceExtendedEventListener import org.schabi.newpipe.player.event.PlayerServiceExtendedEventListener
import org.schabi.newpipe.player.playqueue.PlayQueue import org.schabi.newpipe.player.playqueue.PlayQueue
import org.schabi.newpipe.util.NavigationHelper import org.schabi.newpipe.util.NavigationHelper
import java.util.Optional
import java.util.function.Consumer import java.util.function.Consumer
import java.util.function.Function
class PlayerHolder private constructor() { class PlayerHolder private constructor() {
private var listener: PlayerServiceExtendedEventListener? = null private var listener: PlayerServiceExtendedEventListener? = null
@@ -120,9 +118,7 @@ class PlayerHolder private constructor() {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "stopService() called") Log.d(TAG, "stopService() called")
} }
if (playerService != null) { playerService?.destroyPlayerAndStopService()
playerService!!.destroyPlayerAndStopService()
}
val context = this.commonContext val context = this.commonContext
unbind(context) unbind(context)
// destroyPlayerAndStopService() already runs the next line of code, but run it again just // destroyPlayerAndStopService() already runs the next line of code, but run it again just
@@ -218,26 +214,20 @@ class PlayerHolder private constructor() {
this.isBound = false this.isBound = false
stopPlayerListener() stopPlayerListener()
playerService = null playerService = null
if (listener != null) { listener?.onPlayerDisconnected()
listener!!.onPlayerDisconnected() listener?.onServiceDisconnected()
listener!!.onServiceDisconnected()
}
} }
} }
private fun startPlayerListener() { private fun startPlayerListener() {
if (playerService != null) { // setting the player listener will take care of calling relevant callbacks if the
// setting the player listener will take care of calling relevant callbacks if the // player in the service is (not) already active, also see playerStateListener below
// player in the service is (not) already active, also see playerStateListener below playerService?.setPlayerListener(playerStateListener)
playerService!!.setPlayerListener(playerStateListener)
}
this.player?.setFragmentListener(internalListener) this.player?.setFragmentListener(internalListener)
} }
private fun stopPlayerListener() { private fun stopPlayerListener() {
if (playerService != null) { playerService?.setPlayerListener(null)
playerService!!.setPlayerListener(null)
}
this.player?.removeFragmentListener(internalListener) this.player?.removeFragmentListener(internalListener)
} }
@@ -246,48 +236,34 @@ class PlayerHolder private constructor() {
*/ */
private val internalListener: PlayerServiceEventListener = object : PlayerServiceEventListener { private val internalListener: PlayerServiceEventListener = object : PlayerServiceEventListener {
override fun onViewCreated() { override fun onViewCreated() {
if (listener != null) { listener?.onViewCreated()
listener!!.onViewCreated()
}
} }
override fun onFullscreenStateChanged(fullscreen: Boolean) { override fun onFullscreenStateChanged(fullscreen: Boolean) {
if (listener != null) { listener?.onFullscreenStateChanged(fullscreen)
listener!!.onFullscreenStateChanged(fullscreen)
}
} }
override fun onScreenRotationButtonClicked() { override fun onScreenRotationButtonClicked() {
if (listener != null) { listener?.onScreenRotationButtonClicked()
listener!!.onScreenRotationButtonClicked()
}
} }
override fun onMoreOptionsLongClicked() { override fun onMoreOptionsLongClicked() {
if (listener != null) { listener?.onMoreOptionsLongClicked()
listener!!.onMoreOptionsLongClicked()
}
} }
override fun onPlayerError( override fun onPlayerError(
error: PlaybackException?, error: PlaybackException?,
isCatchableException: Boolean isCatchableException: Boolean
) { ) {
if (listener != null) { listener?.onPlayerError(error, isCatchableException)
listener!!.onPlayerError(error, isCatchableException)
}
} }
override fun hideSystemUiIfNeeded() { override fun hideSystemUiIfNeeded() {
if (listener != null) { listener?.hideSystemUiIfNeeded()
listener!!.hideSystemUiIfNeeded()
}
} }
override fun onQueueUpdate(queue: PlayQueue?) { override fun onQueueUpdate(queue: PlayQueue?) {
if (listener != null) { listener?.onQueueUpdate(queue)
listener!!.onQueueUpdate(queue)
}
} }
override fun onPlaybackUpdate( override fun onPlaybackUpdate(
@@ -296,9 +272,7 @@ class PlayerHolder private constructor() {
shuffled: Boolean, shuffled: Boolean,
parameters: PlaybackParameters? parameters: PlaybackParameters?
) { ) {
if (listener != null) { listener?.onPlaybackUpdate(state, repeatMode, shuffled, parameters)
listener!!.onPlaybackUpdate(state, repeatMode, shuffled, parameters)
}
} }
override fun onProgressUpdate( override fun onProgressUpdate(
@@ -306,21 +280,15 @@ class PlayerHolder private constructor() {
duration: Int, duration: Int,
bufferPercent: Int bufferPercent: Int
) { ) {
if (listener != null) { listener?.onProgressUpdate(currentProgress, duration, bufferPercent)
listener!!.onProgressUpdate(currentProgress, duration, bufferPercent)
}
} }
override fun onMetadataUpdate(info: StreamInfo?, queue: PlayQueue?) { override fun onMetadataUpdate(info: StreamInfo?, queue: PlayQueue?) {
if (listener != null) { listener?.onMetadataUpdate(info, queue)
listener!!.onMetadataUpdate(info, queue)
}
} }
override fun onServiceStopped() { override fun onServiceStopped() {
if (listener != null) { listener?.onServiceStopped()
listener!!.onServiceStopped()
}
unbind(this@PlayerHolder.commonContext) unbind(this@PlayerHolder.commonContext)
} }
} }
@@ -331,14 +299,15 @@ class PlayerHolder private constructor() {
* Auto media browser queries. * Auto media browser queries.
*/ */
private val playerStateListener = Consumer { player: Player? -> private val playerStateListener = Consumer { player: Player? ->
if (listener != null) { val l = listener
if (l != null) {
if (player == null) { if (player == null) {
// player.fragmentListener=null is already done by player.stopActivityBinding(), // player.fragmentListener=null is already done by player.stopActivityBinding(),
// which is called by player.destroy(), which is in turn called by PlayerService // which is called by player.destroy(), which is in turn called by PlayerService
// before setting its player to null // before setting its player to null
listener!!.onPlayerDisconnected() l.onPlayerDisconnected()
} else { } else {
listener!!.onPlayerConnected(player, serviceConnection.playAfterConnect) l.onPlayerConnected(player, serviceConnection.playAfterConnect)
// reset the value of playAfterConnect: if it was true before, it is now "consumed" // reset the value of playAfterConnect: if it was true before, it is now "consumed"
serviceConnection.playAfterConnect = false; serviceConnection.playAfterConnect = false;
player.setFragmentListener(internalListener) player.setFragmentListener(internalListener)