diff --git a/app/src/main/java/com/github/libretube/obj/BottomSheetItem.kt b/app/src/main/java/com/github/libretube/obj/BottomSheetItem.kt index dad4c43f8..73195412a 100644 --- a/app/src/main/java/com/github/libretube/obj/BottomSheetItem.kt +++ b/app/src/main/java/com/github/libretube/obj/BottomSheetItem.kt @@ -3,6 +3,6 @@ package com.github.libretube.obj data class BottomSheetItem( val title: String, val drawable: Int? = null, - val currentValue: String? = null, + val getCurrent: () -> String? = { null }, val onClick: () -> Unit = {} ) diff --git a/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt index 0606515f8..4f6d26638 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt @@ -68,7 +68,6 @@ class OfflinePlayerActivity : BaseActivity() { } binding.player.initialize( - supportFragmentManager, null, binding.doubleTapOverlay.binding, null diff --git a/app/src/main/java/com/github/libretube/ui/adapters/BottomSheetAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/BottomSheetAdapter.kt index 3b1b92a57..f17ca2535 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/BottomSheetAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/BottomSheetAdapter.kt @@ -24,13 +24,13 @@ class BottomSheetAdapter( override fun onBindViewHolder(holder: BottomSheetViewHolder, position: Int) { val item = items[position] holder.binding.apply { + val current = item.getCurrent() title.text = - if (item.currentValue != null) "${item.title} (${item.currentValue})" else item.title + if (current != null) "${item.title} ($current)" else item.title if (item.drawable != null) { drawable.setImageResource(item.drawable) } else { - drawable.visibility = - View.GONE + drawable.visibility = View.GONE } root.setOnClickListener { diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 15897b143..f9b14fbce 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -757,7 +757,6 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { private fun initializePlayerView(response: Streams) { // initialize the player view actions binding.player.initialize( - childFragmentManager, this, doubleTapOverlayBinding, trackSelector diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 22716453d..31f05388d 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -8,13 +8,13 @@ import android.os.Looper import android.util.AttributeSet import android.view.MotionEvent import android.view.View -import androidx.fragment.app.FragmentManager import com.github.libretube.R import com.github.libretube.databinding.DoubleTapOverlayBinding import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding import com.github.libretube.extensions.toDp import com.github.libretube.obj.BottomSheetItem import com.github.libretube.ui.activities.MainActivity +import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.interfaces.DoubleTapInterface import com.github.libretube.ui.interfaces.DoubleTapListener import com.github.libretube.ui.interfaces.OnlinePlayerOptions @@ -41,7 +41,6 @@ internal class CustomExoPlayerView( */ private var doubleTapListener: DoubleTapInterface? = null private var playerOptionsInterface: OnlinePlayerOptions? = null - private lateinit var childFragmentManager: FragmentManager private var trackSelector: TrackSelector? = null private val runnableHandler = Handler(Looper.getMainLooper()) @@ -58,6 +57,9 @@ internal class CustomExoPlayerView( private var resizeModePref = PlayerHelper.resizeModePref + private val supportFragmentManager + get() = (context as BaseActivity).supportFragmentManager + private fun toggleController() { if (isControllerFullyVisible) hideController() else showController() } @@ -73,12 +75,10 @@ internal class CustomExoPlayerView( } fun initialize( - childFragmentManager: FragmentManager, playerViewInterface: OnlinePlayerOptions?, doubleTapOverlayBinding: DoubleTapOverlayBinding, trackSelector: TrackSelector? ) { - this.childFragmentManager = childFragmentManager this.playerOptionsInterface = playerViewInterface this.doubleTapOverlayBinding = doubleTapOverlayBinding this.trackSelector = trackSelector @@ -142,10 +142,12 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.player_autoplay), R.drawable.ic_play, - if (autoplayEnabled) { - context.getString(R.string.enabled) - } else { - context.getString(R.string.disabled) + { + if (autoplayEnabled) { + context.getString(R.string.enabled) + } else { + context.getString(R.string.disabled) + } } ) { onAutoplayClicked() @@ -153,10 +155,12 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.repeat_mode), R.drawable.ic_repeat, - if (player?.repeatMode == RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE) { - context.getString(R.string.repeat_mode_none) - } else { - context.getString(R.string.repeat_mode_current) + { + if (player?.repeatMode == RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE) { + context.getString(R.string.repeat_mode_none) + } else { + context.getString(R.string.repeat_mode_current) + } } ) { onRepeatModeClicked() @@ -164,10 +168,12 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.player_resize_mode), R.drawable.ic_aspect_ratio, - when (resizeMode) { - AspectRatioFrameLayout.RESIZE_MODE_FIT -> context.getString(R.string.resize_mode_fit) - AspectRatioFrameLayout.RESIZE_MODE_FILL -> context.getString(R.string.resize_mode_fill) - else -> context.getString(R.string.resize_mode_zoom) + { + when (resizeMode) { + AspectRatioFrameLayout.RESIZE_MODE_FIT -> context.getString(R.string.resize_mode_fit) + AspectRatioFrameLayout.RESIZE_MODE_FILL -> context.getString(R.string.resize_mode_fill) + else -> context.getString(R.string.resize_mode_zoom) + } } ) { onResizeModeClicked() @@ -175,11 +181,13 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.playback_speed), R.drawable.ic_speed, - "${ - player?.playbackParameters?.speed - .toString() - .replace(".0", "") - }x" + { + "${ + player?.playbackParameters?.speed + .toString() + .replace(".0", "") + }x" + } ) { onPlaybackSpeedClicked() } @@ -190,7 +198,7 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.quality), R.drawable.ic_hd, - "${player?.videoSize?.height}p" + { "${player?.videoSize?.height}p" } ) { playerOptionsInterface?.onQualityClicked() } @@ -198,7 +206,10 @@ internal class CustomExoPlayerView( items.add( BottomSheetItem( context.getString(R.string.audio_track), - R.drawable.ic_audio + R.drawable.ic_audio, + { + trackSelector?.parameters?.preferredAudioLanguages?.firstOrNull() + } ) { playerOptionsInterface?.onAudioStreamClicked() } @@ -207,10 +218,12 @@ internal class CustomExoPlayerView( BottomSheetItem( context.getString(R.string.captions), R.drawable.ic_caption, - if (trackSelector != null && trackSelector!!.parameters.preferredTextLanguages.isNotEmpty()) { - trackSelector!!.parameters.preferredTextLanguages[0] - } else { - context.getString(R.string.none) + { + if (trackSelector != null && trackSelector!!.parameters.preferredTextLanguages.isNotEmpty()) { + trackSelector!!.parameters.preferredTextLanguages[0] + } else { + context.getString(R.string.none) + } } ) { playerOptionsInterface?.onCaptionsClicked() @@ -219,7 +232,7 @@ internal class CustomExoPlayerView( } val bottomSheetFragment = BaseBottomSheet().setItems(items, null) - bottomSheetFragment.show(childFragmentManager, null) + bottomSheetFragment.show(supportFragmentManager, null) } } @@ -332,11 +345,11 @@ internal class CustomExoPlayerView( 1 -> autoplayEnabled = false } } - .show(childFragmentManager) + .show(supportFragmentManager) } override fun onPlaybackSpeedClicked() { - player?.let { PlaybackSpeedSheet(it).show(childFragmentManager) } + player?.let { PlaybackSpeedSheet(it).show(supportFragmentManager) } } override fun onResizeModeClicked() { @@ -354,7 +367,7 @@ internal class CustomExoPlayerView( .setSimpleItems(aspectRatioModeNames) { index -> resizeMode = aspectRatioModes[index] } - .show(childFragmentManager) + .show(supportFragmentManager) } override fun onRepeatModeClicked() { @@ -373,7 +386,7 @@ internal class CustomExoPlayerView( .setSimpleItems(repeatModeNames) { index -> player?.repeatMode = repeatModes[index] } - .show(childFragmentManager) + .show(supportFragmentManager) } override fun onConfigurationChanged(newConfig: Configuration?) {