From 222da07c0d1d4ed8c8e286f9fb6e4719872af039 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Wed, 21 Dec 2022 16:47:53 +0000 Subject: [PATCH] Refactor NiaGradientBackground to accept GradientColors Change-Id: I55840b22e123490097710570bf11554554df90f9 --- .../samples/apps/nowinandroid/ui/NiaApp.kt | 17 ++++------------- .../core/designsystem/component/Background.kt | 19 ++++++++++--------- .../core/designsystem/theme/Gradient.kt | 4 ++++ 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt index 55be2dc55..a3f570ad5 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt @@ -66,6 +66,7 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopAp import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.DrawableResourceIcon import com.google.samples.apps.nowinandroid.core.designsystem.icon.Icon.ImageVectorIcon import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons +import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors import com.google.samples.apps.nowinandroid.feature.settings.R as settingsR import com.google.samples.apps.nowinandroid.feature.settings.SettingsDialog @@ -92,20 +93,10 @@ fun NiaApp( NiaBackground { NiaGradientBackground( - topColor = if (shouldShowGradientBackground) { - LocalGradientColors.current.top + gradientColors = if (shouldShowGradientBackground) { + LocalGradientColors.current } else { - Color.Unspecified - }, - bottomColor = if (shouldShowGradientBackground) { - LocalGradientColors.current.bottom - } else { - Color.Unspecified - }, - containerColor = if (shouldShowGradientBackground) { - LocalGradientColors.current.container - } else { - Color.Unspecified + GradientColors() }, ) { val snackbarHostState = remember { SnackbarHostState() } diff --git a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Background.kt b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Background.kt index 6eb818011..40eae962f 100644 --- a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Background.kt +++ b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Background.kt @@ -34,6 +34,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalBackgroundTheme import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme @@ -69,23 +70,23 @@ fun NiaBackground( * of a [Box] within a [Surface]. * * @param modifier Modifier to be applied to the background. - * @param topColor The top gradient color to be rendered. - * @param bottomColor The bottom gradient color to be rendered. - * @param containerColor The container color over which the gradient will be rendered. + * @param gradientColors The gradient colors to be rendered. * @param content The background content. */ @Composable fun NiaGradientBackground( modifier: Modifier = Modifier, - topColor: Color = LocalGradientColors.current.top, - bottomColor: Color = LocalGradientColors.current.bottom, - containerColor: Color = LocalGradientColors.current.container, + gradientColors: GradientColors = LocalGradientColors.current, content: @Composable () -> Unit ) { - val currentTopColor by rememberUpdatedState(topColor) - val currentBottomColor by rememberUpdatedState(bottomColor) + val currentTopColor by rememberUpdatedState(gradientColors.top) + val currentBottomColor by rememberUpdatedState(gradientColors.bottom) Surface( - color = if (containerColor == Color.Unspecified) Color.Transparent else containerColor, + color = if (gradientColors.container == Color.Unspecified) { + Color.Transparent + } else { + gradientColors.container + }, modifier = modifier.fillMaxSize() ) { Box( diff --git a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/theme/Gradient.kt b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/theme/Gradient.kt index c77041e21..f471af761 100644 --- a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/theme/Gradient.kt +++ b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/theme/Gradient.kt @@ -22,6 +22,10 @@ import androidx.compose.ui.graphics.Color /** * A class to model gradient color values for Now in Android. + * + * @param top The top gradient color to be rendered. + * @param bottom The bottom gradient color to be rendered. + * @param container The container gradient color over which the gradient will be rendered. */ @Immutable data class GradientColors(