From db5eab1ab248e3507d178eba43fe0660e171bbaa Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Mon, 1 Jan 2024 11:28:42 +0100 Subject: [PATCH] refactor(tv): use media3 track type instead of mpv track type for track selection dialog --- .../dev/jdtech/jellyfin/ui/PlayerScreen.kt | 21 ++++++++----------- .../dialogs/VideoPlayerTrackSelectorDialog.kt | 12 +++++------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt index 9c77c517..40909d11 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt @@ -40,7 +40,6 @@ import dev.jdtech.jellyfin.core.R import dev.jdtech.jellyfin.destinations.VideoPlayerTrackSelectorDialogDestination import dev.jdtech.jellyfin.models.PlayerItem import dev.jdtech.jellyfin.models.Track -import dev.jdtech.jellyfin.mpv.TrackType import dev.jdtech.jellyfin.ui.components.player.VideoPlayerControlsLayout import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaButton import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaTitle @@ -122,24 +121,22 @@ fun PlayerScreen( when (result) { is NavResult.Canceled -> Unit is NavResult.Value -> { - val type = when (result.value.trackType) { - TrackType.VIDEO -> C.TRACK_TYPE_VIDEO - TrackType.AUDIO -> C.TRACK_TYPE_AUDIO - TrackType.SUBTITLE -> C.TRACK_TYPE_TEXT - } + val trackType = result.value.trackType + val index = result.value.index + if (result.value.index == -1) { viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters .buildUpon() - .clearOverridesOfType(type) - .setTrackTypeDisabled(type, true) + .clearOverridesOfType(trackType) + .setTrackTypeDisabled(trackType, true) .build() } else { viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters .buildUpon() .setOverrideForType( - TrackSelectionOverride(viewModel.player.currentTracks.groups[result.value.index].mediaTrackGroup, 0), + TrackSelectionOverride(viewModel.player.currentTracks.groups[index].mediaTrackGroup, 0), ) - .setTrackTypeDisabled(type, false) + .setTrackTypeDisabled(trackType, false) .build() } } @@ -254,7 +251,7 @@ fun VideoPlayerControls( isPlaying = isPlaying, onClick = { val tracks = getTracks(player, C.TRACK_TYPE_AUDIO) - navigator.navigate(VideoPlayerTrackSelectorDialogDestination(TrackType.AUDIO, tracks)) + navigator.navigate(VideoPlayerTrackSelectorDialogDestination(C.TRACK_TYPE_AUDIO, tracks)) }, ) VideoPlayerMediaButton( @@ -263,7 +260,7 @@ fun VideoPlayerControls( isPlaying = isPlaying, onClick = { val tracks = getTracks(player, C.TRACK_TYPE_TEXT) - navigator.navigate(VideoPlayerTrackSelectorDialogDestination(TrackType.SUBTITLE, tracks)) + navigator.navigate(VideoPlayerTrackSelectorDialogDestination(C.TRACK_TYPE_TEXT, tracks)) }, ) } diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt index 6a8bd9f5..595c609a 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.media3.common.C import androidx.tv.foundation.lazy.list.TvLazyColumn import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.Border @@ -32,7 +33,6 @@ import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.result.EmptyResultBackNavigator import com.ramcosta.composedestinations.result.ResultBackNavigator import dev.jdtech.jellyfin.models.Track -import dev.jdtech.jellyfin.mpv.TrackType import dev.jdtech.jellyfin.ui.theme.FindroidTheme import dev.jdtech.jellyfin.ui.theme.spacings import kotlinx.parcelize.Parcelize @@ -41,7 +41,7 @@ import dev.jdtech.jellyfin.player.video.R as PlayerVideoR @Parcelize data class VideoPlayerTrackSelectorDialogResult( - val trackType: TrackType, + val trackType: @C.TrackType Int, val index: Int, ) : Parcelable @@ -49,13 +49,13 @@ data class VideoPlayerTrackSelectorDialogResult( @Destination(style = BaseDialogStyle::class) @Composable fun VideoPlayerTrackSelectorDialog( - trackType: TrackType, + trackType: @C.TrackType Int, tracks: Array, resultNavigator: ResultBackNavigator, ) { val dialogTitle = when (trackType) { - TrackType.AUDIO -> PlayerVideoR.string.select_audio_track - TrackType.SUBTITLE -> PlayerVideoR.string.select_subtile_track + C.TRACK_TYPE_AUDIO -> PlayerVideoR.string.select_audio_track + C.TRACK_TYPE_TEXT -> PlayerVideoR.string.select_subtile_track else -> CoreR.string.unknown_error } Surface { @@ -124,7 +124,7 @@ fun VideoPlayerTrackSelectorDialog( private fun VideoPlayerTrackSelectorDialogPreview() { FindroidTheme { VideoPlayerTrackSelectorDialog( - trackType = TrackType.AUDIO, + trackType = C.TRACK_TYPE_AUDIO, tracks = arrayOf( Track( id = 0,