From 6004687deb459632742c036e74162f698f580f77 Mon Sep 17 00:00:00 2001 From: damontecres <154766448+damontecres@users.noreply.github.com> Date: Mon, 24 Nov 2025 10:01:19 -0500 Subject: [PATCH] Fix black theme playback button highlighting (#314) On the playback buttons, inverts the icon color when highlighted for contrast. Closes #295 image --- .../wholphin/ui/playback/PlaybackControls.kt | 12 ++++++- .../wholphin/ui/theme/ThemePreview.kt | 34 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackControls.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackControls.kt index d195afc7..8e17d2a7 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackControls.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackControls.kt @@ -56,13 +56,16 @@ import androidx.tv.material3.Button import androidx.tv.material3.ButtonDefaults import androidx.tv.material3.Icon import androidx.tv.material3.ListItem +import androidx.tv.material3.LocalContentColor import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.github.damontecres.wholphin.R +import com.github.damontecres.wholphin.preferences.AppThemeColors import com.github.damontecres.wholphin.ui.AppColors import com.github.damontecres.wholphin.ui.seekBack import com.github.damontecres.wholphin.ui.seekForward import com.github.damontecres.wholphin.ui.skipStringRes +import com.github.damontecres.wholphin.ui.theme.LocalTheme import com.github.damontecres.wholphin.ui.tryRequestFocus import com.github.damontecres.wholphin.util.ExceptionHandler import kotlinx.coroutines.delay @@ -426,6 +429,7 @@ fun PlaybackButton( onControllerInteraction: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, + interactionSource: MutableInteractionSource? = null, ) { val selectedColor = MaterialTheme.colorScheme.border Button( @@ -438,6 +442,7 @@ fun PlaybackButton( focusedContainerColor = selectedColor, ), contentPadding = PaddingValues(4.dp), + interactionSource = interactionSource, modifier = modifier .padding(4.dp) @@ -448,7 +453,12 @@ fun PlaybackButton( modifier = Modifier.fillMaxSize(), painter = painterResource(iconRes), contentDescription = "", - tint = MaterialTheme.colorScheme.onSurface, + tint = + if (LocalTheme.current == AppThemeColors.OLED_BLACK) { + LocalContentColor.current + } else { + MaterialTheme.colorScheme.onSurface + }, ) } } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/theme/ThemePreview.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/ThemePreview.kt index a4ded398..1e912448 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/theme/ThemePreview.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/theme/ThemePreview.kt @@ -26,14 +26,17 @@ import androidx.tv.material3.MaterialTheme import androidx.tv.material3.NavigationDrawerScope import androidx.tv.material3.Text import androidx.tv.material3.surfaceColorAtElevation +import com.github.damontecres.wholphin.R import com.github.damontecres.wholphin.preferences.AppPreference import com.github.damontecres.wholphin.preferences.AppThemeColors import com.github.damontecres.wholphin.ui.AspectRatios import com.github.damontecres.wholphin.ui.cards.BannerCard import com.github.damontecres.wholphin.ui.cards.SeasonCard import com.github.damontecres.wholphin.ui.cards.WatchedIcon +import com.github.damontecres.wholphin.ui.components.ExpandableFaButton import com.github.damontecres.wholphin.ui.nav.NavDrawerItem import com.github.damontecres.wholphin.ui.nav.NavItem +import com.github.damontecres.wholphin.ui.playback.PlaybackButton import com.github.damontecres.wholphin.ui.preferences.SliderPreference import com.github.damontecres.wholphin.ui.preferences.SwitchPreference import kotlinx.coroutines.flow.Flow @@ -235,6 +238,37 @@ private fun ThemeExample(theme: AppThemeColors) { ) } } + Row( + horizontalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.background(MaterialTheme.colorScheme.surfaceVariant), + ) { + PlaybackButton( + modifier = Modifier, + iconRes = R.drawable.baseline_play_arrow_24, + onClick = {}, + onControllerInteraction = {}, + ) + PlaybackButton( + modifier = Modifier, + iconRes = R.drawable.baseline_play_arrow_24, + onClick = {}, + onControllerInteraction = {}, + interactionSource = source, + ) + PlaybackButton( + modifier = Modifier, + iconRes = R.drawable.baseline_pause_24, + onClick = {}, + onControllerInteraction = {}, + ) + PlaybackButton( + modifier = Modifier, + iconRes = R.drawable.baseline_pause_24, + onClick = {}, + onControllerInteraction = {}, + interactionSource = source, + ) + } } } }