refactor(tv): use media3 track type instead of mpv track type for track selection dialog

This commit is contained in:
Jarne Demeulemeester 2024-01-01 11:28:42 +01:00
parent a6ebb89b78
commit db5eab1ab2
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
2 changed files with 15 additions and 18 deletions

View file

@ -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))
},
)
}

View file

@ -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<Track>,
resultNavigator: ResultBackNavigator<VideoPlayerTrackSelectorDialogResult>,
) {
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,