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.destinations.VideoPlayerTrackSelectorDialogDestination
|
||||||
import dev.jdtech.jellyfin.models.PlayerItem
|
import dev.jdtech.jellyfin.models.PlayerItem
|
||||||
import dev.jdtech.jellyfin.models.Track
|
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.VideoPlayerControlsLayout
|
||||||
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaButton
|
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaButton
|
||||||
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaTitle
|
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaTitle
|
||||||
|
@ -122,24 +121,22 @@ fun PlayerScreen(
|
||||||
when (result) {
|
when (result) {
|
||||||
is NavResult.Canceled -> Unit
|
is NavResult.Canceled -> Unit
|
||||||
is NavResult.Value -> {
|
is NavResult.Value -> {
|
||||||
val type = when (result.value.trackType) {
|
val trackType = result.value.trackType
|
||||||
TrackType.VIDEO -> C.TRACK_TYPE_VIDEO
|
val index = result.value.index
|
||||||
TrackType.AUDIO -> C.TRACK_TYPE_AUDIO
|
|
||||||
TrackType.SUBTITLE -> C.TRACK_TYPE_TEXT
|
|
||||||
}
|
|
||||||
if (result.value.index == -1) {
|
if (result.value.index == -1) {
|
||||||
viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters
|
viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.clearOverridesOfType(type)
|
.clearOverridesOfType(trackType)
|
||||||
.setTrackTypeDisabled(type, true)
|
.setTrackTypeDisabled(trackType, true)
|
||||||
.build()
|
.build()
|
||||||
} else {
|
} else {
|
||||||
viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters
|
viewModel.player.trackSelectionParameters = viewModel.player.trackSelectionParameters
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.setOverrideForType(
|
.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()
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,7 +251,7 @@ fun VideoPlayerControls(
|
||||||
isPlaying = isPlaying,
|
isPlaying = isPlaying,
|
||||||
onClick = {
|
onClick = {
|
||||||
val tracks = getTracks(player, C.TRACK_TYPE_AUDIO)
|
val tracks = getTracks(player, C.TRACK_TYPE_AUDIO)
|
||||||
navigator.navigate(VideoPlayerTrackSelectorDialogDestination(TrackType.AUDIO, tracks))
|
navigator.navigate(VideoPlayerTrackSelectorDialogDestination(C.TRACK_TYPE_AUDIO, tracks))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
VideoPlayerMediaButton(
|
VideoPlayerMediaButton(
|
||||||
|
@ -263,7 +260,7 @@ fun VideoPlayerControls(
|
||||||
isPlaying = isPlaying,
|
isPlaying = isPlaying,
|
||||||
onClick = {
|
onClick = {
|
||||||
val tracks = getTracks(player, C.TRACK_TYPE_TEXT)
|
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.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.media3.common.C
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
||||||
import androidx.tv.foundation.lazy.list.items
|
import androidx.tv.foundation.lazy.list.items
|
||||||
import androidx.tv.material3.Border
|
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.EmptyResultBackNavigator
|
||||||
import com.ramcosta.composedestinations.result.ResultBackNavigator
|
import com.ramcosta.composedestinations.result.ResultBackNavigator
|
||||||
import dev.jdtech.jellyfin.models.Track
|
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.FindroidTheme
|
||||||
import dev.jdtech.jellyfin.ui.theme.spacings
|
import dev.jdtech.jellyfin.ui.theme.spacings
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
@ -41,7 +41,7 @@ import dev.jdtech.jellyfin.player.video.R as PlayerVideoR
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data class VideoPlayerTrackSelectorDialogResult(
|
data class VideoPlayerTrackSelectorDialogResult(
|
||||||
val trackType: TrackType,
|
val trackType: @C.TrackType Int,
|
||||||
val index: Int,
|
val index: Int,
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
|
||||||
|
@ -49,13 +49,13 @@ data class VideoPlayerTrackSelectorDialogResult(
|
||||||
@Destination(style = BaseDialogStyle::class)
|
@Destination(style = BaseDialogStyle::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun VideoPlayerTrackSelectorDialog(
|
fun VideoPlayerTrackSelectorDialog(
|
||||||
trackType: TrackType,
|
trackType: @C.TrackType Int,
|
||||||
tracks: Array<Track>,
|
tracks: Array<Track>,
|
||||||
resultNavigator: ResultBackNavigator<VideoPlayerTrackSelectorDialogResult>,
|
resultNavigator: ResultBackNavigator<VideoPlayerTrackSelectorDialogResult>,
|
||||||
) {
|
) {
|
||||||
val dialogTitle = when (trackType) {
|
val dialogTitle = when (trackType) {
|
||||||
TrackType.AUDIO -> PlayerVideoR.string.select_audio_track
|
C.TRACK_TYPE_AUDIO -> PlayerVideoR.string.select_audio_track
|
||||||
TrackType.SUBTITLE -> PlayerVideoR.string.select_subtile_track
|
C.TRACK_TYPE_TEXT -> PlayerVideoR.string.select_subtile_track
|
||||||
else -> CoreR.string.unknown_error
|
else -> CoreR.string.unknown_error
|
||||||
}
|
}
|
||||||
Surface {
|
Surface {
|
||||||
|
@ -124,7 +124,7 @@ fun VideoPlayerTrackSelectorDialog(
|
||||||
private fun VideoPlayerTrackSelectorDialogPreview() {
|
private fun VideoPlayerTrackSelectorDialogPreview() {
|
||||||
FindroidTheme {
|
FindroidTheme {
|
||||||
VideoPlayerTrackSelectorDialog(
|
VideoPlayerTrackSelectorDialog(
|
||||||
trackType = TrackType.AUDIO,
|
trackType = C.TRACK_TYPE_AUDIO,
|
||||||
tracks = arrayOf(
|
tracks = arrayOf(
|
||||||
Track(
|
Track(
|
||||||
id = 0,
|
id = 0,
|
||||||
|
|
Loading…
Reference in a new issue