mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 22:30:30 +05:30
Merge pull request #2702 from Bnyro/master
Remove unused radio buttons from download dialog
This commit is contained in:
commit
18190c33b0
@ -20,17 +20,22 @@ import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.enums.FileType
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.updateParameters
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setAspectRatio
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.util.PlayerHelper
|
||||
import com.google.android.exoplayer2.C
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
import com.google.android.exoplayer2.MediaItem
|
||||
import com.google.android.exoplayer2.MediaItem.SubtitleConfiguration
|
||||
import com.google.android.exoplayer2.Player
|
||||
import com.google.android.exoplayer2.source.MergingMediaSource
|
||||
import com.google.android.exoplayer2.source.ProgressiveMediaSource
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerView
|
||||
import com.google.android.exoplayer2.upstream.FileDataSource
|
||||
import com.google.android.exoplayer2.util.MimeTypes
|
||||
import java.io.File
|
||||
|
||||
class OfflinePlayerActivity : BaseActivity() {
|
||||
@ -38,6 +43,8 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
private lateinit var videoId: String
|
||||
private lateinit var player: ExoPlayer
|
||||
private lateinit var playerView: StyledPlayerView
|
||||
private lateinit var trackSelector: DefaultTrackSelector
|
||||
|
||||
private lateinit var playerBinding: ExoStyledPlayerControlViewBinding
|
||||
private val playerViewModel: PlayerViewModel by viewModels()
|
||||
|
||||
@ -60,8 +67,11 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun initializePlayer() {
|
||||
trackSelector = DefaultTrackSelector(this)
|
||||
|
||||
player = ExoPlayer.Builder(this)
|
||||
.setHandleAudioBecomingNoisy(true)
|
||||
.setTrackSelector(trackSelector)
|
||||
.build().apply {
|
||||
addListener(object : Player.Listener {
|
||||
override fun onEvents(player: Player, events: Player.Events) {
|
||||
@ -75,9 +85,9 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
playerView = binding.player
|
||||
|
||||
playerView.setShowSubtitleButton(true)
|
||||
playerView.subtitleView?.visibility = View.VISIBLE
|
||||
playerView.player = player
|
||||
|
||||
playerBinding = binding.player.binding
|
||||
|
||||
playerBinding.fullscreen.visibility = View.GONE
|
||||
@ -85,11 +95,13 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
finish()
|
||||
}
|
||||
|
||||
PlayerHelper.applyCaptionsStyle(this, playerView.subtitleView)
|
||||
|
||||
binding.player.initialize(
|
||||
null,
|
||||
binding.doubleTapOverlay.binding,
|
||||
binding.playerGestureControlsView.binding,
|
||||
null
|
||||
trackSelector
|
||||
)
|
||||
}
|
||||
|
||||
@ -110,40 +122,59 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
val audioUri = audio?.path?.let { File(it).toUri() }
|
||||
val subtitleUri = subtitle?.path?.let { File(it).toUri() }
|
||||
|
||||
setMediaSource(
|
||||
videoUri,
|
||||
audioUri
|
||||
)
|
||||
setMediaSource(videoUri, audioUri, subtitleUri)
|
||||
|
||||
trackSelector.updateParameters {
|
||||
setPreferredTextRoleFlags(C.ROLE_FLAG_CAPTION)
|
||||
setPreferredTextLanguage("en")
|
||||
}
|
||||
|
||||
player.prepare()
|
||||
player.play()
|
||||
}
|
||||
|
||||
private fun setMediaSource(videoUri: Uri?, audioUri: Uri?) {
|
||||
private fun setMediaSource(videoUri: Uri?, audioUri: Uri?, subtitleUri: Uri?) {
|
||||
val subtitle = subtitleUri?.let {
|
||||
SubtitleConfiguration.Builder(it)
|
||||
.setMimeType(MimeTypes.APPLICATION_SUBRIP)
|
||||
.build()
|
||||
}
|
||||
subtitle?.id
|
||||
|
||||
when {
|
||||
videoUri != null && audioUri != null -> {
|
||||
val videoItem = MediaItem.Builder()
|
||||
.setUri(videoUri)
|
||||
.apply {
|
||||
if (subtitle != null) setSubtitleConfigurations(listOf(subtitle))
|
||||
}
|
||||
.build()
|
||||
|
||||
val videoSource = ProgressiveMediaSource.Factory(FileDataSource.Factory())
|
||||
.createMediaSource(
|
||||
MediaItem.fromUri(videoUri)
|
||||
)
|
||||
.createMediaSource(videoItem)
|
||||
|
||||
val audioSource = ProgressiveMediaSource.Factory(FileDataSource.Factory())
|
||||
.createMediaSource(
|
||||
MediaItem.fromUri(audioUri)
|
||||
)
|
||||
.createMediaSource(MediaItem.fromUri(audioUri))
|
||||
|
||||
val mediaSource = MergingMediaSource(
|
||||
audioSource,
|
||||
videoSource
|
||||
)
|
||||
val mediaSource = MergingMediaSource(audioSource, videoSource)
|
||||
|
||||
player.setMediaSource(mediaSource)
|
||||
}
|
||||
videoUri != null -> player.setMediaItem(
|
||||
MediaItem.fromUri(videoUri)
|
||||
MediaItem.Builder()
|
||||
.setUri(videoUri)
|
||||
.apply {
|
||||
if (subtitle != null) setSubtitleConfigurations(listOf(subtitle))
|
||||
}
|
||||
.build()
|
||||
)
|
||||
audioUri != null -> player.setMediaItem(
|
||||
MediaItem.fromUri(audioUri)
|
||||
MediaItem.Builder()
|
||||
.setUri(audioUri)
|
||||
.apply {
|
||||
if (subtitle != null) setSubtitleConfigurations(listOf(subtitle))
|
||||
}
|
||||
.build()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -31,14 +31,6 @@ class DownloadDialog(
|
||||
|
||||
fetchAvailableSources()
|
||||
|
||||
binding.audioRadio.setOnClickListener {
|
||||
binding.videoSpinner.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.videoRadio.setOnClickListener {
|
||||
binding.videoSpinner.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
binding.fileName.filters += InputFilter { source, start, end, _, _, _ ->
|
||||
if (source.isNullOrBlank()) {
|
||||
return@InputFilter null
|
||||
|
@ -103,9 +103,7 @@ import com.google.android.exoplayer2.Player
|
||||
import com.google.android.exoplayer2.audio.AudioAttributes
|
||||
import com.google.android.exoplayer2.ext.cronet.CronetDataSource
|
||||
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory
|
||||
import com.google.android.exoplayer2.text.Cue.TEXT_SIZE_TYPE_ABSOLUTE
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
||||
import com.google.android.exoplayer2.ui.CaptionStyleCompat
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerView
|
||||
import com.google.android.exoplayer2.upstream.DefaultDataSource
|
||||
import com.google.android.exoplayer2.util.MimeTypes
|
||||
@ -816,7 +814,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
||||
|
||||
private fun prepareExoPlayerView() {
|
||||
exoPlayerView.apply {
|
||||
setShowSubtitleButton(true)
|
||||
setShowSubtitleButton(false)
|
||||
setShowNextButton(false)
|
||||
setShowPreviousButton(false)
|
||||
// controllerShowTimeoutMs = 1500
|
||||
@ -827,18 +825,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
||||
|
||||
playerBinding.exoProgress.setPlayer(exoPlayer)
|
||||
|
||||
applyCaptionStyle()
|
||||
}
|
||||
|
||||
private fun applyCaptionStyle() {
|
||||
val captionStyle = PlayerHelper.getCaptionStyle(requireContext())
|
||||
exoPlayerView.subtitleView?.apply {
|
||||
setApplyEmbeddedFontSizes(false)
|
||||
setFixedTextSize(TEXT_SIZE_TYPE_ABSOLUTE, PlayerHelper.captionsTextSize)
|
||||
if (!PlayerHelper.useSystemCaptionStyle) return
|
||||
setApplyEmbeddedStyles(captionStyle == CaptionStyleCompat.DEFAULT)
|
||||
setStyle(captionStyle)
|
||||
}
|
||||
PlayerHelper.applyCaptionsStyle(requireContext(), exoPlayerView.subtitleView)
|
||||
}
|
||||
|
||||
private fun localizedDate(date: String?): String? {
|
||||
|
@ -16,7 +16,9 @@ import com.github.libretube.api.obj.PipedStream
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.enums.AudioQuality
|
||||
import com.github.libretube.enums.PlayerEvent
|
||||
import com.google.android.exoplayer2.text.Cue
|
||||
import com.google.android.exoplayer2.ui.CaptionStyleCompat
|
||||
import com.google.android.exoplayer2.ui.SubtitleView
|
||||
import com.google.android.exoplayer2.video.VideoSize
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@ -442,4 +444,18 @@ object PlayerHelper {
|
||||
)
|
||||
return actions
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the captions style according to the users preferences
|
||||
*/
|
||||
fun applyCaptionsStyle(context: Context, subtitleView: SubtitleView?) {
|
||||
val captionStyle = getCaptionStyle(context)
|
||||
subtitleView?.apply {
|
||||
setApplyEmbeddedFontSizes(false)
|
||||
setFixedTextSize(Cue.TEXT_SIZE_TYPE_ABSOLUTE, captionsTextSize)
|
||||
if (!useSystemCaptionStyle) return
|
||||
setApplyEmbeddedStyles(captionStyle == CaptionStyleCompat.DEFAULT)
|
||||
setStyle(captionStyle)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,27 +25,6 @@
|
||||
android:inputType="text" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<RadioGroup
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checkedButton="@id/video_radio"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/video_radio"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/video" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/audio_radio"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="20dp"
|
||||
android:text="@string/audio" />
|
||||
|
||||
</RadioGroup>
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/video_spinner"
|
||||
android:layout_width="match_parent"
|
||||
|
Loading…
Reference in New Issue
Block a user