From bce459b39a2aa9933c252ff10024831a138547a7 Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Sun, 10 Sep 2023 11:36:13 +0300 Subject: [PATCH] Display show genres in a small chip on show details --- .../kotlin/app/tivi/util/TiviTextCreator.kt | 19 ++++++------------ .../tivi/showdetails/details/ShowDetails.kt | 20 +++++++++++++++---- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/common/ui/resources/strings/src/commonMain/kotlin/app/tivi/util/TiviTextCreator.kt b/common/ui/resources/strings/src/commonMain/kotlin/app/tivi/util/TiviTextCreator.kt index 9b052dc99a..c0a78077fe 100644 --- a/common/ui/resources/strings/src/commonMain/kotlin/app/tivi/util/TiviTextCreator.kt +++ b/common/ui/resources/strings/src/commonMain/kotlin/app/tivi/util/TiviTextCreator.kt @@ -50,6 +50,7 @@ interface CommonTiviTextCreator { watchedEpisodeCount < episodeCount -> { strings.followedWatchStatsToWatch(episodeCount - watchedEpisodeCount) } + watchedEpisodeCount > 0 -> strings.followedWatchStatsComplete else -> "" } @@ -58,6 +59,7 @@ interface CommonTiviTextCreator { season != null && episode != null -> { strings.seasonEpisodeNumber(season.number!!, episode.number!!) } + else -> "" } @@ -109,19 +111,10 @@ interface CommonTiviTextCreator { return text } - fun genreString(genres: List?): CharSequence? { - if (!genres.isNullOrEmpty()) { - return buildString { - for (i in genres.indices) { - val genre = genres[i] - append(strings.getGenreLabel(genre)) - append("\u00A0") // nbsp - append(GenreStringer.getEmoji(genre)) - if (i < genres.size - 1) append(" \u2022 ") - } - } - } - return null + fun genreLabel(genre: Genre): String = buildString { + append(strings.getGenreLabel(genre)) + append("\u00A0") // nbsp + append(GenreStringer.getEmoji(genre)) } fun genreContentDescription(genres: List?): CharSequence? { diff --git a/ui/show/details/src/commonMain/kotlin/app/tivi/showdetails/details/ShowDetails.kt b/ui/show/details/src/commonMain/kotlin/app/tivi/showdetails/details/ShowDetails.kt index 63b94ac343..26832b6ef6 100644 --- a/ui/show/details/src/commonMain/kotlin/app/tivi/showdetails/details/ShowDetails.kt +++ b/ui/show/details/src/commonMain/kotlin/app/tivi/showdetails/details/ShowDetails.kt @@ -47,6 +47,7 @@ import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.Star import androidx.compose.material.rememberDismissState +import androidx.compose.material3.Card import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -602,6 +603,7 @@ private fun Header(title: String) { } } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun Genres(genres: List) { val textCreator = LocalTiviTextCreator.current @@ -616,10 +618,20 @@ private fun Genres(genres: List) { .toString() }, ) { - Text( - text = textCreator.genreString(genres).toString(), - style = MaterialTheme.typography.bodyMedium, - ) + FlowRow( + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalArrangement = Arrangement.spacedBy(4.dp), + ) { + genres.forEach { genre -> + Card { + Text( + text = textCreator.genreLabel(genre), + style = MaterialTheme.typography.labelLarge, + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), + ) + } + } + } } }