diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/Components.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/Components.kt index 18d193ee..c27cde4e 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/Components.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/Components.kt @@ -13,6 +13,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -21,6 +22,8 @@ import androidx.tv.material3.Text import androidx.tv.material3.contentColorFor import androidx.tv.material3.surfaceColorAtElevation import coil3.compose.AsyncImage +import com.github.damontecres.wholphin.R +import com.github.damontecres.wholphin.ui.FontAwesome import java.time.LocalDateTime @Composable @@ -56,14 +59,7 @@ fun Program( RoundedCornerShape(cornerSize) } } - val title = - remember(startedBeforeGuide) { - if (startedBeforeGuide) { - "< " - } else { - "" - } + (program.name ?: program.id.toString()) - } + val title = program.name ?: program.id.toString() Box( modifier = modifier @@ -74,35 +70,51 @@ fun Program( shape = shape, ), ) { - Column( - verticalArrangement = Arrangement.spacedBy(4.dp), - modifier = - Modifier - .fillMaxSize() - .padding(4.dp), + Row( + modifier = Modifier.fillMaxSize(), ) { - Text( - text = title, - color = textColor, - fontSize = 16.sp, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - modifier = Modifier, - ) - listOfNotNull( - program.seasonEpisode?.let { "S${it.season} E${it.episode}" }, - program.subtitle, - ).joinToString(" - ") - .ifBlank { null } - ?.let { - Text( - text = it, - color = textColor, - fontSize = 14.sp, - overflow = TextOverflow.Ellipsis, - modifier = Modifier, - ) - } + if (startedBeforeGuide) { + Text( + text = stringResource(R.string.fa_caret_left), + fontFamily = FontAwesome, + color = textColor, + fontSize = 16.sp, + modifier = + Modifier + .align(Alignment.CenterVertically) + .padding(start = 2.dp), + ) + } + Column( + verticalArrangement = Arrangement.spacedBy(4.dp), + modifier = + Modifier + .fillMaxSize() + .padding(start = 2.dp, end = 4.dp, top = 4.dp, bottom = 4.dp), + ) { + Text( + text = title, + color = textColor, + fontSize = 16.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + modifier = Modifier, + ) + listOfNotNull( + program.seasonEpisode?.let { "S${it.season} E${it.episode}" }, + program.subtitle, + ).joinToString(" - ") + .ifBlank { null } + ?.let { + Text( + text = it, + color = textColor, + fontSize = 14.sp, + overflow = TextOverflow.Ellipsis, + modifier = Modifier, + ) + } + } } RecordingMarker( isRecording = program.isRecording, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt index 621dd7da..9bce1dfe 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/livetv/LiveTvViewModel.kt @@ -229,11 +229,12 @@ class LiveTvViewModel } else { null } - val name = (dto.seriesName ?: dto.name)?.replace(Regex("[\n\r]"), "") + // Clean up name/subtitles by collapsing whitespace (including newlines) into single spaces + val name = (dto.seriesName ?: dto.name)?.replace(Regex("\\s+"), " ") val subtitle = dto.episodeTitle .takeIf { dto.isSeries ?: false } - ?.replace(Regex("[\n\r]"), "") + ?.replace(Regex("\\s+"), " ") val p = TvProgram( id = dto.id, diff --git a/app/src/main/res/values/fa_strings.xml b/app/src/main/res/values/fa_strings.xml index e027f30c..59814e43 100644 --- a/app/src/main/res/values/fa_strings.xml +++ b/app/src/main/res/values/fa_strings.xml @@ -14,6 +14,8 @@ + +