2
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-08-22 10:09:39 +00:00

VideoDetailFragment: replace every getOpt() with get()

This commit is contained in:
Profpatsch 2025-01-01 20:46:13 +01:00 committed by Stypox
parent 38ed1da79e
commit 91aed1e240
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23

View File

@ -31,7 +31,6 @@ import android.view.View
import android.view.View.OnLongClickListener
import android.view.View.OnTouchListener
import android.view.ViewGroup
import android.view.ViewParent
import android.view.ViewTreeObserver
import android.view.WindowManager
import android.view.animation.DecelerateInterpolator
@ -126,10 +125,8 @@ import org.schabi.newpipe.util.image.CoilHelper.loadDetailsThumbnail
import java.util.LinkedList
import java.util.List
import java.util.Objects
import java.util.Optional
import java.util.concurrent.TimeUnit
import java.util.function.Consumer
import java.util.function.Function
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
@ -229,8 +226,8 @@ class VideoDetailFragment :
// It will do nothing if the player is not in fullscreen mode
hideSystemUiIfNeeded()
val playerUi: Optional<MainPlayerUi> =
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
val playerUi: MainPlayerUi? =
player!!.UIs().get(MainPlayerUi::class.java)
if (!player!!.videoPlayerSelected() && !playAfterConnect) {
return
}
@ -239,19 +236,22 @@ class VideoDetailFragment :
// If the video is playing but orientation changed
// let's make the video in fullscreen again
checkLandscape()
} else if (playerUi.map<Boolean?>(Function { ui: MainPlayerUi? -> ui!!.isFullscreen() && !ui.isVerticalVideo() })
.orElse(false) && // Tablet UI has orientation-independent fullscreen
} else if (playerUi != null &&
playerUi.isFullscreen() &&
!playerUi.isVerticalVideo() &&
// Tablet UI has orientation-independent fullscreen
!DeviceUtils.isTablet(activity)
) {
// Device is in portrait orientation after rotation but UI is in fullscreen.
// Return back to non-fullscreen state
playerUi.ifPresent(Consumer { obj: MainPlayerUi? -> obj!!.toggleFullscreen() })
playerUi.toggleFullscreen()
}
if (playAfterConnect ||
(
currentInfo != null && this.isAutoplayEnabled &&
playerUi.isEmpty()
currentInfo != null &&
this.isAutoplayEnabled &&
playerUi == null
)
) {
autoPlayEnabled = true // forcefully start playing
@ -572,8 +572,7 @@ class VideoDetailFragment :
View.OnClickListener { v: View? ->
if (playerIsNotStopped()) {
player!!.playPause()
player!!.UIs().getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
.ifPresent(Consumer { ui: VideoPlayerUi? -> ui!!.hideControls(0, 0) })
player!!.UIs().get(VideoPlayerUi::class.java)?.hideControls(0, 0)
showSystemUi()
} else {
autoPlayEnabled = true // forcefully start playing
@ -776,9 +775,7 @@ class VideoDetailFragment :
override fun onKeyDown(keyCode: Int): Boolean {
return this.isPlayerAvailable &&
player!!.UIs().getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
.map<Boolean?>(Function { playerUi: VideoPlayerUi? -> playerUi!!.onKeyDown(keyCode) })
.orElse(false)
player!!.UIs().get(VideoPlayerUi::class.java)?.onKeyDown(keyCode) == true
}
override fun onBackPressed(): Boolean {
@ -1137,14 +1134,11 @@ class VideoDetailFragment :
// If a user watched video inside fullscreen mode and than chose another player
// return to non-fullscreen mode
if (this.isPlayerAvailable) {
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(
Consumer { playerUi: MainPlayerUi? ->
if (playerUi!!.isFullscreen()) {
playerUi.toggleFullscreen()
player!!.UIs().get(MainPlayerUi::class.java)?.let {
if (it.isFullscreen) {
it.toggleFullscreen()
}
}
)
}
}
@ -1288,14 +1282,14 @@ class VideoDetailFragment :
*/
private fun hideMainPlayerOnLoadingNewStream() {
val root = this.root
if (noPlayerServiceAvailable() || root.isEmpty() || !player!!.videoPlayerSelected()) {
if (noPlayerServiceAvailable() || root == null || !player!!.videoPlayerSelected()) {
return
}
removeVideoPlayerView()
if (this.isAutoplayEnabled) {
playerService!!.stopForImmediateReusing()
root.ifPresent(Consumer { view: View -> view.setVisibility(View.GONE) })
root.setVisibility(View.GONE)
} else {
PlayerHolder.stopService()
}
@ -1376,18 +1370,16 @@ class VideoDetailFragment :
}
// setup the surface view height, so that it fits the video correctly
setHeightThumbnail()
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(
Consumer { playerUi: MainPlayerUi? ->
player!!.UIs().get(MainPlayerUi::class.java)?.let { playerUi ->
val b = binding
// sometimes binding would be null here, even though getView() != null above u.u
if (binding != null) {
if (b != null) {
// prevent from re-adding a view multiple times
playerUi!!.removeViewFromParent()
binding!!.playerPlaceholder.addView(playerUi.getBinding().getRoot())
playerUi.removeViewFromParent()
b.playerPlaceholder.addView(playerUi.getBinding().getRoot())
playerUi.setupVideoSurfaceIfNeeded()
}
}
)
}
)
}
@ -1396,8 +1388,7 @@ class VideoDetailFragment :
makeDefaultHeightForVideoPlaceholder()
if (player != null) {
player!!.UIs().getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
.ifPresent(Consumer { obj: VideoPlayerUi? -> obj!!.removeViewFromParent() })
player!!.UIs().get(VideoPlayerUi::class.java)?.removeViewFromParent()
}
}
@ -1474,15 +1465,12 @@ class VideoDetailFragment :
binding!!.detailThumbnailImageView.setMinimumHeight(newHeight)
if (this.isPlayerAvailable) {
val maxHeight = (metrics.heightPixels * MAX_PLAYER_HEIGHT).toInt()
player!!.UIs().getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
.ifPresent(
Consumer { ui: VideoPlayerUi? ->
ui!!.getBinding().surfaceView.setHeights(
player!!.UIs().get(VideoPlayerUi::class.java)?.let {
it.binding.surfaceView.setHeights(
newHeight,
if (ui.isFullscreen()) newHeight else maxHeight
if (it.isFullscreen) newHeight else maxHeight
)
}
)
}
}
@ -2065,9 +2053,9 @@ class VideoDetailFragment :
override fun onFullscreenStateChanged(fullscreen: Boolean) {
setupBrightness()
if (!this.isPlayerAndPlayerServiceAvailable || player!!.UIs()
.getOpt<MainPlayerUi>(MainPlayerUi::class.java).isEmpty() ||
this.root.map<ViewParent?>(Function { obj: View? -> obj!!.getParent() }).isEmpty()
if (!this.isPlayerAndPlayerServiceAvailable ||
player?.UIs()?.get(MainPlayerUi::class.java) == null ||
this.root?.parent == null
) {
return
}
@ -2096,8 +2084,7 @@ class VideoDetailFragment :
if (DeviceUtils.isTablet(activity) &&
(!PlayerHelper.globalScreenOrientationLocked(activity) || isLandscape)
) {
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(Consumer { obj: MainPlayerUi? -> obj!!.toggleFullscreen() })
player!!.UIs().get(MainPlayerUi::class.java)?.toggleFullscreen()
return
}
@ -2203,10 +2190,8 @@ class VideoDetailFragment :
}
private val isFullscreen: Boolean
get() = this.isPlayerAvailable && player!!.UIs()
.getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
.map<Boolean?>(Function { obj: VideoPlayerUi? -> obj!!.isFullscreen() })
.orElse(false)
get() = this.isPlayerAvailable && player?.UIs()
?.get(VideoPlayerUi::class.java)?.isFullscreen() == true
private fun playerIsNotStopped(): Boolean {
return this.isPlayerAvailable && !player!!.isStopped()
@ -2290,8 +2275,7 @@ class VideoDetailFragment :
setAutoPlay(true)
}
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(Consumer { obj: MainPlayerUi? -> obj!!.checkLandscape() })
player!!.UIs().get(MainPlayerUi::class.java)?.checkLandscape()
// Let's give a user time to look at video information page if video is not playing
if (PlayerHelper.globalScreenOrientationLocked(activity) && !player!!.isPlaying()) {
player!!.play()
@ -2590,8 +2574,7 @@ class VideoDetailFragment :
player!!.isPlaying() &&
!this@VideoDetailFragment.isFullscreen && !DeviceUtils.isTablet(activity)
) {
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(Consumer { obj: MainPlayerUi? -> obj!!.toggleFullscreen() })
player!!.UIs().get(MainPlayerUi::class.java)?.toggleFullscreen()
}
setOverlayLook(binding!!.appBarLayout, behavior, 1f)
}
@ -2605,8 +2588,7 @@ class VideoDetailFragment :
// Re-enable clicks
setOverlayElementsClickable(true)
if (this@VideoDetailFragment.isPlayerAvailable) {
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java)
.ifPresent(Consumer { obj: MainPlayerUi? -> obj!!.closeItemsList() })
player!!.UIs().get(MainPlayerUi::class.java)?.closeItemsList()
}
setOverlayLook(binding!!.appBarLayout, behavior, 0f)
}
@ -2616,13 +2598,11 @@ class VideoDetailFragment :
showSystemUi()
}
if (this@VideoDetailFragment.isPlayerAvailable) {
player!!.UIs().getOpt<MainPlayerUi>(MainPlayerUi::class.java).ifPresent(
Consumer { ui: MainPlayerUi? ->
if (ui!!.isControlsVisible()) {
ui.hideControls(0, 0)
player!!.UIs().get(MainPlayerUi::class.java)?.let {
if (it.isControlsVisible) {
it.hideControls(0, 0)
}
}
)
}
}
@ -2724,18 +2704,8 @@ class VideoDetailFragment :
val isPlayerAndPlayerServiceAvailable: Boolean
get() = player != null && playerService != null
val root: Optional<View?>
get() = Optional.ofNullable<Player?>(player)
.flatMap<VideoPlayerUi?>(
Function { player1: Player? ->
player1!!.UIs().getOpt<VideoPlayerUi>(VideoPlayerUi::class.java)
}
)
.map<View?>(
Function { playerUi: VideoPlayerUi? ->
playerUi!!.getBinding().getRoot()
}
)
val root: View?
get() = player?.UIs()?.get(VideoPlayerUi::class.java)?.binding?.root
private fun updateBottomSheetState(newState: Int) {
bottomSheetState = newState