From 92f1cf7eee4b34cc2fcd17fb844a3b8f66e2fcc0 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Sun, 31 Dec 2023 21:32:37 +0100 Subject: [PATCH] feat(tv): disable unsupported tracks in dialog --- .../java/dev/jdtech/jellyfin/ui/PlayerScreen.kt | 14 +++++--------- .../ui/dialogs/VideoPlayerTrackSelectorDialog.kt | 12 ++++++++++++ .../main/java/dev/jdtech/jellyfin/models/Track.kt | 1 + 3 files changed, 18 insertions(+), 9 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 74ce8155..53e3faab 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 @@ -277,17 +277,13 @@ private fun getTracks(player: Player, type: Int): ArrayList { if (group.type == type) { val format = group.mediaTrackGroup.getFormat(0) - val label = format.label - val language = Locale(format.language.toString()).displayLanguage - val codec = format.codecs - val selected = group.isSelected - val track = Track( id = groupIndex, - label = label, - language = language, - codec = codec, - selected = selected, + label = format.label, + language = Locale(format.language.toString()).displayLanguage, + codec = format.codecs, + selected = group.isSelected, + supported = group.isSupported ) tracks.add(track) 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 fb2e583d..5187ec1a 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 @@ -58,10 +58,12 @@ fun VideoPlayerTrackSelectorDialog( onClick = { resultNavigator.navigateBack(result = track.id) }, + enabled = track.supported, shape = ClickableSurfaceDefaults.shape(shape = RoundedCornerShape(4.dp)), colors = ClickableSurfaceDefaults.colors( containerColor = Color.Transparent, focusedContainerColor = Color.Transparent, + disabledContainerColor = Color.Transparent, ), border = ClickableSurfaceDefaults.border( focusedBorder = Border( @@ -105,6 +107,7 @@ private fun VideoPlayerTrackSelectorDialogPreview() { language = "English", codec = "flac", selected = true, + supported = true ), Track( id = 0, @@ -112,6 +115,15 @@ private fun VideoPlayerTrackSelectorDialogPreview() { language = "Japanese", codec = "flac", selected = false, + supported = true, + ), + Track( + id = 0, + label = null, + language = "English", + codec = "truehd", + selected = false, + supported = false, ), ), resultNavigator = EmptyResultBackNavigator(), diff --git a/player/core/src/main/java/dev/jdtech/jellyfin/models/Track.kt b/player/core/src/main/java/dev/jdtech/jellyfin/models/Track.kt index 36d19e18..35371240 100644 --- a/player/core/src/main/java/dev/jdtech/jellyfin/models/Track.kt +++ b/player/core/src/main/java/dev/jdtech/jellyfin/models/Track.kt @@ -10,4 +10,5 @@ data class Track( val language: String?, val codec: String?, val selected: Boolean, + val supported: Boolean, ) : Parcelable