From 0ebd5c5afef2245a4fcb0e31202781bedf738f94 Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Wed, 4 Feb 2026 10:18:38 +0100 Subject: [PATCH] feat: enhance WatchStateIndicator to include started state and update usage in SeriesComponents --- .../app/content/series/SeriesComponents.kt | 4 ++-- .../bbara/purefin/app/home/ui/HomeModels.kt | 6 ++++- .../ui/components/WatchStateIndicator.kt | 22 ++++++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/hu/bbara/purefin/app/content/series/SeriesComponents.kt b/app/src/main/java/hu/bbara/purefin/app/content/series/SeriesComponents.kt index 4d0458c..9cce516 100644 --- a/app/src/main/java/hu/bbara/purefin/app/content/series/SeriesComponents.kt +++ b/app/src/main/java/hu/bbara/purefin/app/content/series/SeriesComponents.kt @@ -256,14 +256,14 @@ private fun EpisodeCard( ) } WatchStateIndicator( - episode.watched, + watched = episode.watched, + started = (episode.progress ?: 0.0) > 0.0, modifier = Modifier .align(Alignment.TopEnd) .padding(8.dp) ) } Column( - //verticalArrangement = Arrangement.spacedBy(2.dp) ) { Text( text = episode.title, diff --git a/app/src/main/java/hu/bbara/purefin/app/home/ui/HomeModels.kt b/app/src/main/java/hu/bbara/purefin/app/home/ui/HomeModels.kt index 142c6ed..e83ba8c 100644 --- a/app/src/main/java/hu/bbara/purefin/app/home/ui/HomeModels.kt +++ b/app/src/main/java/hu/bbara/purefin/app/home/ui/HomeModels.kt @@ -66,7 +66,11 @@ data class PosterItem( BaseItemKind.SERIES -> series!!.heroImageUrl else -> throw IllegalArgumentException("Invalid type: $type") } - + fun watched() = when (type) { + BaseItemKind.MOVIE -> movie!!.watched + BaseItemKind.EPISODE -> episode!!.watched + else -> throw IllegalArgumentException("Invalid type: $type") + } } data class HomeNavItem( diff --git a/app/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt b/app/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt index fb44f1d..7e10c9f 100644 --- a/app/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt +++ b/app/src/main/java/hu/bbara/purefin/common/ui/components/WatchStateIndicator.kt @@ -22,16 +22,22 @@ import androidx.compose.ui.unit.dp @Composable fun WatchStateIndicator( watched: Boolean, + started: Boolean, watchedColor: Color = MaterialTheme.colorScheme.onPrimary, watchedBackgroundColor: Color = MaterialTheme.colorScheme.primary, - unwatchedColor: Color = MaterialTheme.colorScheme.onSecondary, - unwatchedBackgroundColor: Color = MaterialTheme.colorScheme.secondary, + startedColor: Color = MaterialTheme.colorScheme.onSecondary, + startedBackgroundColor: Color = MaterialTheme.colorScheme.secondary, size: Int = 24, modifier: Modifier = Modifier ) { - val foregroundColor = if (watched) watchedColor.copy(alpha = 0.8f) else unwatchedColor.copy(alpha = 0.3f) - val backgroundColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else unwatchedBackgroundColor.copy(alpha = 0.3f) - val borderColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else unwatchedBackgroundColor.copy(alpha = 0.8f) + + if (watched.not() && started.not()) { + return + } + + val foregroundColor = if (watched) watchedColor.copy(alpha = 0.8f) else startedColor.copy(alpha = 0.3f) + val backgroundColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else startedBackgroundColor.copy(alpha = 0.3f) + val borderColor = if (watched) watchedBackgroundColor.copy(alpha = 0.8f) else startedBackgroundColor.copy(alpha = 0.8f) Box( @@ -61,9 +67,15 @@ private fun WatchStateIndicatorPreview() { Column() { WatchStateIndicator( watched = false, + started = false ) WatchStateIndicator( watched = true, + started = false + ) + WatchStateIndicator( + watched = false, + started = true ) } } \ No newline at end of file