Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5902c5b9 authored by Valentin Iftime's avatar Valentin Iftime
Browse files

Notification bundle header UI tweaks

 - Resize bundle header view: 48dp
 - Resize bundle icon and add background
 - Resize some padding inside bundle header

Flag: com.android.systemui.notification_bundle_ui

Test: atest BundleHeaderGutsScreenshotTest
Test: atest  BundleHeaderScreenshotTest
Bug: 439043409

Change-Id: I53fb7213b0466a3acc710424724333f8304c6d4f
parent f4570597
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -24,8 +24,10 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -175,14 +177,15 @@ private fun ContentScope.BundleHeaderContent(
) {
    Row(
        verticalAlignment = Alignment.CenterVertically,
        modifier = modifier.padding(vertical = 12.dp),
        modifier = modifier.height(48.dp).padding(vertical = 12.dp),
    ) {
        BundleIcon(
            viewModel.bundleIcon,
            large = false, // BundleHeader is always small
            modifier =
                Modifier.padding(start = 16.dp, end = 8.dp)
                Modifier.padding(start = 16.dp, end = 16.dp)
                    .align(Alignment.CenterVertically)
                    .width(40.dp)
                    // Has to be a shared element because we may have a semi-transparent background
                    .element(NotificationRowPrimitives.Elements.NotificationIconBackground),
        )
+7 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.graphics.Color
import com.android.compose.theme.LocalAndroidColorScheme

@Composable
@ReadOnlyComposable
@@ -56,3 +57,9 @@ private fun blendARGB(
        alpha = color1.alpha * inverseRatio + color2.alpha * ratio,
    )
}

@Composable
@ReadOnlyComposable
internal fun bundleHeaderIconBGColor(): Color {
    return LocalAndroidColorScheme.current.surfaceEffect2
}
+9 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
@@ -67,13 +68,18 @@ object NotificationRowPrimitives {
/** The Icon displayed at the start of any notification row. */
@Composable
fun BundleIcon(@DrawableRes drawable: Int?, large: Boolean, modifier: Modifier = Modifier) {
    val iconBackground = notificationProtectionColor()
    val iconBackground = bundleHeaderIconBGColor()
    Box(
        modifier =
            if (large) {
                modifier.size(40.dp).background(color = iconBackground, shape = CircleShape)
            } else {
                modifier.size(20.dp)
                modifier
                    .size(24.dp)
                    .background(
                        color = iconBackground,
                        shape = RoundedCornerShape(24.dp, 24.dp, 24.dp, 24.dp),
                    )
            }
    ) {
        if (drawable == null) return@Box
@@ -84,7 +90,7 @@ fun BundleIcon(@DrawableRes drawable: Int?, large: Boolean, modifier: Modifier =
                if (large) {
                    Modifier.fillMaxSize(.5f).align(Alignment.Center)
                } else {
                    Modifier.padding(2.dp)
                    Modifier.padding(2.dp).align(Alignment.Center)
                },
            contentScale = ContentScale.Fit,
            colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary),