From 47089e3dc971e71153bbb2ca91bf0038b0015fcf Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:34:40 +0000 Subject: [PATCH] let the mini player colour run behind the nav bar again --- .../com/subtracks/ui/playback/MiniPlayer.kt | 127 ++++++++---------- 1 file changed, 59 insertions(+), 68 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/playback/MiniPlayer.kt b/app/src/main/kotlin/com/subtracks/ui/playback/MiniPlayer.kt index c80857e9..1fc3d424 100644 --- a/app/src/main/kotlin/com/subtracks/ui/playback/MiniPlayer.kt +++ b/app/src/main/kotlin/com/subtracks/ui/playback/MiniPlayer.kt @@ -1,19 +1,15 @@ package com.subtracks.ui.playback -import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.windowInsetsBottomHeight import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Pause @@ -30,7 +26,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.lerp import androidx.compose.ui.unit.dp import com.subtracks.data.model.CoverArtRef @@ -51,79 +46,75 @@ fun MiniPlayer( ) { val item = state.item ?: return ArtworkTheme(artwork) { - Column(modifier.fillMaxWidth()) { - Surface( - color = - artwork?.let { lerp(it.scheme.surfaceContainerHigh, it.gradientHigh, 0.5f) } - ?: MaterialTheme.colorScheme.surfaceContainerHigh, - contentColor = MaterialTheme.colorScheme.onSurface, + Surface( + color = + artwork?.let { lerp(it.scheme.surfaceContainerHigh, it.gradientHigh, 0.5f) } + ?: MaterialTheme.colorScheme.surfaceContainerHigh, + contentColor = MaterialTheme.colorScheme.onSurface, + modifier = + modifier.fillMaxWidth().clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null, + onClick = onExpand, + ), + ) { + Row( modifier = - Modifier.fillMaxWidth().clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = null, - onClick = onExpand, - ), + Modifier + .fillMaxWidth() + .navigationBarsPadding() + .padding(start = 12.dp, end = 4.dp, top = 12.dp, bottom = 12.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(12.dp), ) { - Row( - modifier = - Modifier - .fillMaxWidth() - .padding(start = 12.dp, end = 4.dp, top = 12.dp, bottom = 12.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(12.dp), - ) { - CoverArt( - ref = coverArt, - name = item.title, - modifier = Modifier.size(56.dp).clip(RoundedCornerShape(6.dp)), + CoverArt( + ref = coverArt, + name = item.title, + modifier = Modifier.size(56.dp).clip(RoundedCornerShape(6.dp)), + ) + Column(Modifier.weight(1f)) { + Text( + text = item.title, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurface, + maxLines = 1, + modifier = Modifier.basicMarquee(), ) - Column(Modifier.weight(1f)) { - Text( - text = item.title, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 1, - modifier = Modifier.basicMarquee(), - ) - Text( - text = listOfNotNull(item.artist, item.album).joinToString(" • "), - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 1, - modifier = Modifier.basicMarquee(), - ) - } - Row(verticalAlignment = Alignment.CenterVertically) { - IconButton(onClick = onPlayPause, modifier = Modifier.size(56.dp)) { - if (state.isBuffering && state.isPlaying) { - CircularProgressIndicator( - color = MaterialTheme.colorScheme.onSurface, - strokeWidth = 3.dp, - modifier = Modifier.size(28.dp), - ) - } else { - Icon( - imageVector = if (state.isPlaying) Icons.Rounded.Pause else Icons.Rounded.PlayArrow, - contentDescription = if (state.isPlaying) "Pause" else "Play", - tint = MaterialTheme.colorScheme.onSurface, - modifier = Modifier.size(42.dp), - ) - } - } - IconButton(onClick = onNext, enabled = state.hasNext, modifier = Modifier.size(56.dp)) { + Text( + text = listOfNotNull(item.artist, item.album).joinToString(" • "), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + maxLines = 1, + modifier = Modifier.basicMarquee(), + ) + } + Row(verticalAlignment = Alignment.CenterVertically) { + IconButton(onClick = onPlayPause, modifier = Modifier.size(56.dp)) { + if (state.isBuffering && state.isPlaying) { + CircularProgressIndicator( + color = MaterialTheme.colorScheme.onSurface, + strokeWidth = 3.dp, + modifier = Modifier.size(28.dp), + ) + } else { Icon( - imageVector = Icons.Rounded.SkipNext, - contentDescription = "Next", + imageVector = if (state.isPlaying) Icons.Rounded.Pause else Icons.Rounded.PlayArrow, + contentDescription = if (state.isPlaying) "Pause" else "Play", tint = MaterialTheme.colorScheme.onSurface, modifier = Modifier.size(42.dp), ) } } + IconButton(onClick = onNext, enabled = state.hasNext, modifier = Modifier.size(56.dp)) { + Icon( + imageVector = Icons.Rounded.SkipNext, + contentDescription = "Next", + tint = MaterialTheme.colorScheme.onSurface, + modifier = Modifier.size(42.dp), + ) + } } } - Spacer( - Modifier.fillMaxWidth().windowInsetsBottomHeight(WindowInsets.navigationBars).background(Color.Black), - ) } } }