From a9f2e684f128fe57f18151825cbebc29817aad2e Mon Sep 17 00:00:00 2001 From: damontecres <154766448+damontecres@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:14:35 -0500 Subject: [PATCH] Add logo to playback overlay (#172) ## Details Adds the logo (if available) to the upper left corner of the playback controls overlay. I am still experimenting with how logos can be used on the details pages. It's problematic because of the variety of colors, eg dark logos can be hard to see on the dark background. ## Issues Related to #92 ## Screenshot logo_playback Large --- .../damontecres/wholphin/data/model/BaseItem.kt | 13 +++++++++++++ .../wholphin/ui/playback/PlaybackOverlay.kt | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt b/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt index 2188e9b7..7386bd60 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt @@ -18,6 +18,7 @@ data class BaseItem( val data: BaseItemDto, val imageUrl: String?, val backdropImageUrl: String? = null, + val logoImageUrl: String? = null, ) { val id get() = data.id @@ -109,10 +110,22 @@ data class BaseItem( } else { api.imageApi.getItemImageUrl(dto.id, ImageType.PRIMARY) } + val logoImageUrl = + if (useSeriesForPrimary && (dto.type == BaseItemKind.EPISODE || dto.type == BaseItemKind.SEASON)) { + val seriesId = dto.seriesId + if (seriesId != null) { + api.imageApi.getItemImageUrl(seriesId, ImageType.LOGO) + } else { + api.imageApi.getItemImageUrl(dto.id, ImageType.LOGO) + } + } else { + api.imageApi.getItemImageUrl(dto.id, ImageType.LOGO) + } return BaseItem( dto, primaryImageUrl, backdropImageUrl, + logoImageUrl, ) } } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackOverlay.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackOverlay.kt index 02473287..99f72ce3 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackOverlay.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackOverlay.kt @@ -45,6 +45,7 @@ import androidx.compose.ui.unit.sp import androidx.media3.common.Player import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text +import coil3.compose.AsyncImage import com.github.damontecres.wholphin.R import com.github.damontecres.wholphin.data.model.BaseItem import com.github.damontecres.wholphin.data.model.Chapter @@ -395,6 +396,21 @@ fun PlaybackOverlay( } } } + AnimatedVisibility( + !showDebugInfo && item?.logoImageUrl.isNotNullOrBlank() && controllerViewState.controlsVisible, + modifier = + Modifier + .align(Alignment.TopStart), + ) { + AsyncImage( + model = item?.logoImageUrl, + contentDescription = "Logo", + modifier = + Modifier + .fillMaxWidth(.33f) + .padding(32.dp), + ) + } AnimatedVisibility( showDebugInfo && controllerViewState.controlsVisible, modifier =