refactor(tv): use media3 track type instead of mpv track type for track selection dialog
This commit is contained in:
parent
a6ebb89b78
commit
db5eab1ab2
2 changed files with 15 additions and 18 deletions
|
@ -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))
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue