refactor: remove constructors from StatsSheet

This commit is contained in:
Bnyro 2023-09-13 15:53:15 +02:00
parent 4cef17c9ab
commit 360a611601
5 changed files with 47 additions and 24 deletions

View File

@ -30,4 +30,5 @@ object IntentData {
const val color = "color" const val color = "color"
const val streamItem = "streamItem" const val streamItem = "streamItem"
const val url = "url" const val url = "url"
const val videoStats = "videoStats"
} }

View File

@ -34,6 +34,8 @@ import com.github.libretube.db.DatabaseHolder
import com.github.libretube.enums.PlayerEvent import com.github.libretube.enums.PlayerEvent
import com.github.libretube.enums.SbSkipOptions import com.github.libretube.enums.SbSkipOptions
import com.github.libretube.extensions.updateParameters import com.github.libretube.extensions.updateParameters
import com.github.libretube.obj.VideoStats
import com.github.libretube.util.TextUtils
import java.util.Locale import java.util.Locale
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -688,4 +690,18 @@ object PlayerHelper {
isFlagSet(roleFlags, C.ROLE_FLAG_MAIN) || isFlagSet(roleFlags, C.ROLE_FLAG_MAIN) ||
isFlagSet(roleFlags, C.ROLE_FLAG_ALTERNATE) isFlagSet(roleFlags, C.ROLE_FLAG_ALTERNATE)
} }
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
fun getVideoStats(player: ExoPlayer, videoId: String): VideoStats {
val videoInfo = "${player.videoFormat?.codecs.orEmpty()} ${
TextUtils.formatBitrate(
player.videoFormat?.bitrate
)
}"
val audioInfo = "${player.audioFormat?.codecs.orEmpty()} ${
TextUtils.formatBitrate(player.audioFormat?.bitrate)
}"
val videoQuality = "${player.videoFormat?.width}x${player.videoFormat?.height} ${player.videoFormat?.frameRate?.toInt()}fps"
return VideoStats(videoId, videoInfo, videoQuality, audioInfo)
}
} }

View File

@ -0,0 +1,12 @@
package com.github.libretube.obj
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
data class VideoStats(
val videoId: String,
val videoInfo: String,
val videoQuality: String,
val audioInfo: String
) : Parcelable

View File

@ -87,6 +87,7 @@ import com.github.libretube.helpers.NavigationHelper
import com.github.libretube.helpers.PlayerHelper import com.github.libretube.helpers.PlayerHelper
import com.github.libretube.helpers.PlayerHelper.SPONSOR_HIGHLIGHT_CATEGORY import com.github.libretube.helpers.PlayerHelper.SPONSOR_HIGHLIGHT_CATEGORY
import com.github.libretube.helpers.PlayerHelper.checkForSegments import com.github.libretube.helpers.PlayerHelper.checkForSegments
import com.github.libretube.helpers.PlayerHelper.getVideoStats
import com.github.libretube.helpers.PlayerHelper.isInSegment import com.github.libretube.helpers.PlayerHelper.isInSegment
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
import com.github.libretube.helpers.PreferenceHelper import com.github.libretube.helpers.PreferenceHelper
@ -1548,7 +1549,9 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
override fun onStatsClicked() { override fun onStatsClicked() {
if (!this::streams.isInitialized) return if (!this::streams.isInitialized) return
StatsSheet(exoPlayer, videoId) val videoStats = getVideoStats(exoPlayer, videoId)
StatsSheet()
.apply { arguments = bundleOf(IntentData.videoStats to videoStats) }
.show(childFragmentManager) .show(childFragmentManager)
} }

View File

@ -5,16 +5,15 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.media3.exoplayer.ExoPlayer import com.github.libretube.constants.IntentData
import com.github.libretube.databinding.DialogStatsBinding import com.github.libretube.databinding.DialogStatsBinding
import com.github.libretube.util.TextUtils import com.github.libretube.extensions.parcelable
import com.github.libretube.obj.VideoStats
class StatsSheet( class StatsSheet : ExpandedBottomSheet() {
private val player: ExoPlayer,
private val videoId: String
) : ExpandedBottomSheet() {
private var _binding: DialogStatsBinding? = null private var _binding: DialogStatsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var stats: VideoStats
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
@ -25,27 +24,19 @@ class StatsSheet(
return binding.root return binding.root
} }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
stats = arguments?.parcelable(IntentData.videoStats)!!
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val binding = binding val binding = binding
binding.videoId.setText(videoId) binding.videoId.setText(stats.videoId)
binding.videoInfo.setText( binding.videoInfo.setText(stats.videoInfo)
"${player.videoFormat?.codecs.orEmpty()} ${ binding.audioInfo.setText(stats.audioInfo)
TextUtils.formatBitrate( binding.videoQuality.setText(stats.videoQuality)
player.videoFormat?.bitrate
)
}"
)
binding.audioInfo.setText(
"${player.audioFormat?.codecs.orEmpty()} ${
TextUtils.formatBitrate(player.audioFormat?.bitrate)
}"
)
binding.videoQuality.setText(
"${player.videoFormat?.width}x${player.videoFormat?.height} ${player.videoFormat?.frameRate?.toInt()}fps"
)
} }
override fun onDestroyView() { override fun onDestroyView() {