From 44825d0c25572614e9a8a4261bdffd9b4e1bf0eb Mon Sep 17 00:00:00 2001 From: damontecres <154766448+damontecres@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:51:31 -0500 Subject: [PATCH] Several UI changes (#171) ## Changes: - Hopefully finally fixes next up card image issues - Remove the slider wraparound behavior in settings - Removes the shadows/blurry effect on movie & person titles - Adds the official rating to the home page - Consistently order the official rating on home, movie, & series pages - Add 1.75x speed for playback - Don't time out the audio track selection/playback speed/video scale dialogs ## Issues Closes #166 Closes #168 Closes #169 Related to #162 Follow up to #167 --- .../damontecres/wholphin/ui/components/SliderBar.kt | 5 +++-- .../damontecres/wholphin/ui/detail/PersonPage.kt | 10 +--------- .../wholphin/ui/detail/movie/MovieDetailsHeader.kt | 13 +------------ .../ui/detail/series/FocusedEpisodeHeader.kt | 2 +- .../github/damontecres/wholphin/ui/main/HomePage.kt | 5 +++-- .../wholphin/ui/playback/NextUpEpisode.kt | 4 ++-- .../wholphin/ui/playback/PlaybackControls.kt | 3 ++- .../wholphin/ui/preferences/SliderPreference.kt | 1 + 8 files changed, 14 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt index 4e49da20..2b57a73c 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/components/SliderBar.kt @@ -33,6 +33,7 @@ fun SliderBar( min: Long, max: Long, onChange: (Long) -> Unit, + enableWrapAround: Boolean, modifier: Modifier = Modifier, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, interval: Int = 1, @@ -52,7 +53,7 @@ fun SliderBar( onChange(currentValue) }, onLeft = { - if (currentValue <= min) { + if (enableWrapAround && currentValue <= min) { currentValue = max } else { currentValue = (currentValue - interval).coerceAtLeast(min) @@ -60,7 +61,7 @@ fun SliderBar( onChange(currentValue) }, onRight = { - if (currentValue >= max) { + if (enableWrapAround && currentValue >= max) { currentValue = min } else { currentValue = (currentValue + interval).coerceAtMost(max) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/PersonPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/PersonPage.kt index bd04b4c6..3e8a8d12 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/PersonPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/PersonPage.kt @@ -357,15 +357,7 @@ fun PersonHeader( Text( text = name, color = MaterialTheme.colorScheme.onSurface, - style = - MaterialTheme.typography.displaySmall.copy( - shadow = - Shadow( - color = Color.DarkGray, - offset = Offset(5f, 2f), - blurRadius = 2f, - ), - ), + style = MaterialTheme.typography.displaySmall, maxLines = 2, overflow = TextOverflow.Ellipsis, modifier = Modifier.padding(bottom = 8.dp), diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetailsHeader.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetailsHeader.kt index 1bf0869a..45382fc6 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetailsHeader.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetailsHeader.kt @@ -16,9 +16,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow @@ -64,15 +61,7 @@ fun MovieDetailsHeader( Text( text = movie.name ?: "", color = MaterialTheme.colorScheme.onSurface, - style = - MaterialTheme.typography.displayMedium.copy( - shadow = - Shadow( - color = Color.DarkGray, - offset = Offset(5f, 2f), - blurRadius = 2f, - ), - ), + style = MaterialTheme.typography.displayMedium, maxLines = 2, overflow = TextOverflow.Ellipsis, ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/FocusedEpisodeHeader.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/FocusedEpisodeHeader.kt index d4cacc99..78775e03 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/FocusedEpisodeHeader.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/FocusedEpisodeHeader.kt @@ -55,8 +55,8 @@ fun FocusedEpisodeHeader( ?.let { add(it) } - dto.timeRemaining?.roundMinutes?.let { add("$it left") } dto.officialRating?.let(::add) + dto.timeRemaining?.roundMinutes?.let { add("$it left") } } DotSeparatedRow( texts = details, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt index 64c00953..7e424cb6 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt @@ -263,7 +263,7 @@ fun HomePageContent( } Column(modifier = Modifier.fillMaxSize()) { - MainPageHeader( + HomePageHeader( item = focusedItem, modifier = Modifier @@ -357,7 +357,7 @@ fun HomePageContent( } @Composable -fun MainPageHeader( +fun HomePageHeader( item: BaseItem?, modifier: Modifier = Modifier, ) { @@ -396,6 +396,7 @@ fun MainPageHeader( dto.timeRemaining?.roundMinutes?.let { add("$it left") } + dto.officialRating?.let(::add) } title?.let { Text( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt index b3d506c0..5596a864 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt @@ -143,12 +143,12 @@ fun NextUpCard( onClick = onClick, interactionSource = interactionSource, ) { - Box(modifier = Modifier) { + Box(modifier = Modifier.fillMaxSize()) { AsyncImage( model = imageUrl, contentDescription = null, contentScale = ContentScale.Fit, - modifier = Modifier, + modifier = Modifier.fillMaxSize(), ) Box( 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 f7afb526..e131457d 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 @@ -352,7 +352,7 @@ fun LeftPlaybackButtons( } } -private val speedOptions = listOf(".25", ".5", ".75", "1.0", "1.25", "1.5", "2.0") +private val speedOptions = listOf(".25", ".5", ".75", "1.0", "1.25", "1.5", "1.75", "2.0") @Composable fun RightPlaybackButtons( @@ -456,6 +456,7 @@ fun RightPlaybackButtons( showOptionsDialog = false }, onSelectChoice = { index, _ -> + onControllerInteractionForDialog.invoke() when (index) { 0 -> showAudioDialog = true 1 -> showSpeedDialog = true diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SliderPreference.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SliderPreference.kt index a7e13e69..4aefde8c 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SliderPreference.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/SliderPreference.kt @@ -78,6 +78,7 @@ fun SliderPreference( interval = preference.interval, onChange = onChange, color = MaterialTheme.colorScheme.border, + enableWrapAround = false, interactionSource = interactionSource, modifier = Modifier.weight(1f), )