Merge "Define the Compose MaterialTheme for SystemUI" into udc-dev

This commit is contained in:
Lucas Dupin
2023-05-19 16:07:46 +00:00
committed by Android (Google) Code Review
6 changed files with 98 additions and 45 deletions

View File

@@ -85,7 +85,7 @@ private val ButtonPaddings = PaddingValues(horizontal = 16.dp, vertical = 8.dp)
@Composable @Composable
private fun filledButtonColors(): ButtonColors { private fun filledButtonColors(): ButtonColors {
val colors = LocalAndroidColorScheme.current val colors = LocalAndroidColorScheme.current.deprecated
return ButtonDefaults.buttonColors( return ButtonDefaults.buttonColors(
containerColor = colors.colorAccentPrimary, containerColor = colors.colorAccentPrimary,
contentColor = colors.textColorOnAccent, contentColor = colors.textColorOnAccent,
@@ -94,7 +94,7 @@ private fun filledButtonColors(): ButtonColors {
@Composable @Composable
private fun outlineButtonColors(): ButtonColors { private fun outlineButtonColors(): ButtonColors {
val colors = LocalAndroidColorScheme.current val colors = LocalAndroidColorScheme.current.deprecated
return ButtonDefaults.outlinedButtonColors( return ButtonDefaults.outlinedButtonColors(
contentColor = colors.textColorPrimary, contentColor = colors.textColorPrimary,
) )
@@ -102,7 +102,7 @@ private fun outlineButtonColors(): ButtonColors {
@Composable @Composable
private fun outlineButtonBorder(): BorderStroke { private fun outlineButtonBorder(): BorderStroke {
val colors = LocalAndroidColorScheme.current val colors = LocalAndroidColorScheme.current.deprecated
return BorderStroke( return BorderStroke(
width = 1.dp, width = 1.dp,
color = colors.colorAccentPrimaryVariant, color = colors.colorAccentPrimaryVariant,

View File

@@ -37,7 +37,56 @@ val LocalAndroidColorScheme =
* Important: Use M3 colors from MaterialTheme.colorScheme whenever possible instead. In the future, * Important: Use M3 colors from MaterialTheme.colorScheme whenever possible instead. In the future,
* most of the colors in this class will be removed in favor of their M3 counterpart. * most of the colors in this class will be removed in favor of their M3 counterpart.
*/ */
class AndroidColorScheme internal constructor(context: Context) { class AndroidColorScheme(context: Context) {
val onSecondaryFixedVariant = getColor(context, R.attr.materialColorOnSecondaryFixedVariant)
val onTertiaryFixedVariant = getColor(context, R.attr.materialColorOnTertiaryFixedVariant)
val surfaceContainerLowest = getColor(context, R.attr.materialColorSurfaceContainerLowest)
val onPrimaryFixedVariant = getColor(context, R.attr.materialColorOnPrimaryFixedVariant)
val onSecondaryContainer = getColor(context, R.attr.materialColorOnSecondaryContainer)
val onTertiaryContainer = getColor(context, R.attr.materialColorOnTertiaryContainer)
val surfaceContainerLow = getColor(context, R.attr.materialColorSurfaceContainerLow)
val onPrimaryContainer = getColor(context, R.attr.materialColorOnPrimaryContainer)
val secondaryFixedDim = getColor(context, R.attr.materialColorSecondaryFixedDim)
val onErrorContainer = getColor(context, R.attr.materialColorOnErrorContainer)
val onSecondaryFixed = getColor(context, R.attr.materialColorOnSecondaryFixed)
val onSurfaceInverse = getColor(context, R.attr.materialColorOnSurfaceInverse)
val tertiaryFixedDim = getColor(context, R.attr.materialColorTertiaryFixedDim)
val onTertiaryFixed = getColor(context, R.attr.materialColorOnTertiaryFixed)
val primaryFixedDim = getColor(context, R.attr.materialColorPrimaryFixedDim)
val secondaryContainer = getColor(context, R.attr.materialColorSecondaryContainer)
val errorContainer = getColor(context, R.attr.materialColorErrorContainer)
val onPrimaryFixed = getColor(context, R.attr.materialColorOnPrimaryFixed)
val primaryInverse = getColor(context, R.attr.materialColorPrimaryInverse)
val secondaryFixed = getColor(context, R.attr.materialColorSecondaryFixed)
val surfaceInverse = getColor(context, R.attr.materialColorSurfaceInverse)
val surfaceVariant = getColor(context, R.attr.materialColorSurfaceVariant)
val tertiaryContainer = getColor(context, R.attr.materialColorTertiaryContainer)
val tertiaryFixed = getColor(context, R.attr.materialColorTertiaryFixed)
val primaryContainer = getColor(context, R.attr.materialColorPrimaryContainer)
val onBackground = getColor(context, R.attr.materialColorOnBackground)
val primaryFixed = getColor(context, R.attr.materialColorPrimaryFixed)
val onSecondary = getColor(context, R.attr.materialColorOnSecondary)
val onTertiary = getColor(context, R.attr.materialColorOnTertiary)
val surfaceDim = getColor(context, R.attr.materialColorSurfaceDim)
val surfaceBright = getColor(context, R.attr.materialColorSurfaceBright)
val onError = getColor(context, R.attr.materialColorOnError)
val surface = getColor(context, R.attr.materialColorSurface)
val surfaceContainerHigh = getColor(context, R.attr.materialColorSurfaceContainerHigh)
val surfaceContainerHighest = getColor(context, R.attr.materialColorSurfaceContainerHighest)
val onSurfaceVariant = getColor(context, R.attr.materialColorOnSurfaceVariant)
val outline = getColor(context, R.attr.materialColorOutline)
val outlineVariant = getColor(context, R.attr.materialColorOutlineVariant)
val onPrimary = getColor(context, R.attr.materialColorOnPrimary)
val onSurface = getColor(context, R.attr.materialColorOnSurface)
val surfaceContainer = getColor(context, R.attr.materialColorSurfaceContainer)
val primary = getColor(context, R.attr.materialColorPrimary)
val secondary = getColor(context, R.attr.materialColorSecondary)
val tertiary = getColor(context, R.attr.materialColorTertiary)
@Deprecated("Use the new android tokens: go/sysui-colors")
val deprecated = DeprecatedValues(context)
class DeprecatedValues(context: Context) {
val colorPrimary = getColor(context, R.attr.colorPrimary) val colorPrimary = getColor(context, R.attr.colorPrimary)
val colorPrimaryDark = getColor(context, R.attr.colorPrimaryDark) val colorPrimaryDark = getColor(context, R.attr.colorPrimaryDark)
val colorAccent = getColor(context, R.attr.colorAccent) val colorAccent = getColor(context, R.attr.colorAccent)
@@ -64,6 +113,7 @@ class AndroidColorScheme internal constructor(context: Context) {
val textColorOnAccent = getColor(context, R.attr.textColorOnAccent) val textColorOnAccent = getColor(context, R.attr.textColorOnAccent)
val colorForeground = getColor(context, R.attr.colorForeground) val colorForeground = getColor(context, R.attr.colorForeground)
val colorForegroundInverse = getColor(context, R.attr.colorForegroundInverse) val colorForegroundInverse = getColor(context, R.attr.colorForegroundInverse)
}
companion object { companion object {
fun getColor(context: Context, attr: Int): Color { fun getColor(context: Context, attr: Int): Color {

View File

@@ -40,7 +40,9 @@ class SystemUIThemeTest {
@Test @Test
fun testAndroidColorsAreAvailableInsideTheme() { fun testAndroidColorsAreAvailableInsideTheme() {
composeRule.setContent { composeRule.setContent {
PlatformTheme { Text("foo", color = LocalAndroidColorScheme.current.colorAccent) } PlatformTheme {
Text("foo", color = LocalAndroidColorScheme.current.deprecated.colorAccent)
}
} }
composeRule.onNodeWithText("foo").assertIsDisplayed() composeRule.onNodeWithText("foo").assertIsDisplayed()
@@ -50,7 +52,7 @@ class SystemUIThemeTest {
fun testAccessingAndroidColorsWithoutThemeThrows() { fun testAccessingAndroidColorsWithoutThemeThrows() {
assertThrows(IllegalStateException::class.java) { assertThrows(IllegalStateException::class.java) {
composeRule.setContent { composeRule.setContent {
Text("foo", color = LocalAndroidColorScheme.current.colorAccent) Text("foo", color = LocalAndroidColorScheme.current.deprecated.colorAccent)
} }
} }
} }

View File

@@ -91,7 +91,7 @@ fun PeopleScreen(
// Make sure to use the Android colors and not the default Material3 colors to have the exact // Make sure to use the Android colors and not the default Material3 colors to have the exact
// same colors as the View implementation. // same colors as the View implementation.
val androidColors = LocalAndroidColorScheme.current val androidColors = LocalAndroidColorScheme.current.deprecated
Surface( Surface(
color = androidColors.colorBackground, color = androidColors.colorBackground,
contentColor = androidColors.textColorPrimary, contentColor = androidColors.textColorPrimary,
@@ -170,7 +170,7 @@ private fun LazyListScope.ConversationList(
stringResource(headerTextResource), stringResource(headerTextResource),
Modifier.padding(start = 16.dp), Modifier.padding(start = 16.dp),
style = MaterialTheme.typography.labelLarge, style = MaterialTheme.typography.labelLarge,
color = LocalAndroidColorScheme.current.colorAccentPrimaryVariant, color = LocalAndroidColorScheme.current.deprecated.colorAccentPrimaryVariant,
) )
Spacer(Modifier.height(10.dp)) Spacer(Modifier.height(10.dp))
@@ -180,7 +180,7 @@ private fun LazyListScope.ConversationList(
if (index > 0) { if (index > 0) {
item { item {
Divider( Divider(
color = LocalAndroidColorScheme.current.colorBackground, color = LocalAndroidColorScheme.current.deprecated.colorBackground,
thickness = 2.dp, thickness = 2.dp,
) )
} }
@@ -204,7 +204,7 @@ private fun Tile(
withTopCornerRadius: Boolean, withTopCornerRadius: Boolean,
withBottomCornerRadius: Boolean, withBottomCornerRadius: Boolean,
) { ) {
val androidColors = LocalAndroidColorScheme.current val androidColors = LocalAndroidColorScheme.current.deprecated
val cornerRadius = dimensionResource(R.dimen.people_space_widget_radius) val cornerRadius = dimensionResource(R.dimen.people_space_widget_radius)
val topCornerRadius = if (withTopCornerRadius) cornerRadius else 0.dp val topCornerRadius = if (withTopCornerRadius) cornerRadius else 0.dp
val bottomCornerRadius = if (withBottomCornerRadius) cornerRadius else 0.dp val bottomCornerRadius = if (withBottomCornerRadius) cornerRadius else 0.dp

View File

@@ -76,8 +76,8 @@ internal fun PeopleScreenEmpty(
Modifier.fillMaxWidth().defaultMinSize(minHeight = 56.dp), Modifier.fillMaxWidth().defaultMinSize(minHeight = 56.dp),
colors = colors =
ButtonDefaults.buttonColors( ButtonDefaults.buttonColors(
containerColor = androidColors.colorAccentPrimary, containerColor = androidColors.deprecated.colorAccentPrimary,
contentColor = androidColors.textColorOnAccent, contentColor = androidColors.deprecated.textColorOnAccent,
) )
) { ) {
Text(stringResource(R.string.got_it)) Text(stringResource(R.string.got_it))
@@ -90,8 +90,8 @@ private fun ExampleTile() {
val androidColors = LocalAndroidColorScheme.current val androidColors = LocalAndroidColorScheme.current
Surface( Surface(
shape = RoundedCornerShape(28.dp), shape = RoundedCornerShape(28.dp),
color = androidColors.colorSurface, color = androidColors.deprecated.colorSurface,
contentColor = androidColors.textColorPrimary, contentColor = androidColors.deprecated.textColorPrimary,
) { ) {
Row( Row(
Modifier.padding(vertical = 20.dp, horizontal = 16.dp), Modifier.padding(vertical = 20.dp, horizontal = 16.dp),

View File

@@ -122,7 +122,7 @@ fun FooterActions(
} }
val backgroundColor = colorAttr(R.attr.underSurfaceColor) val backgroundColor = colorAttr(R.attr.underSurfaceColor)
val contentColor = LocalAndroidColorScheme.current.textColorPrimary val contentColor = LocalAndroidColorScheme.current.deprecated.textColorPrimary
val backgroundTopRadius = dimensionResource(R.dimen.qs_corner_radius) val backgroundTopRadius = dimensionResource(R.dimen.qs_corner_radius)
val backgroundModifier = val backgroundModifier =
remember( remember(
@@ -287,7 +287,7 @@ private fun NumberButton(
number.toString(), number.toString(),
modifier = Modifier.align(Alignment.Center), modifier = Modifier.align(Alignment.Center),
style = MaterialTheme.typography.bodyLarge, style = MaterialTheme.typography.bodyLarge,
color = LocalAndroidColorScheme.current.textColorPrimary, color = LocalAndroidColorScheme.current.deprecated.textColorPrimary,
// TODO(b/242040009): This should only use a standard text style instead and // TODO(b/242040009): This should only use a standard text style instead and
// should not override the text size. // should not override the text size.
fontSize = 18.sp, fontSize = 18.sp,
@@ -305,7 +305,7 @@ private fun NumberButton(
@Composable @Composable
private fun NewChangesDot(modifier: Modifier = Modifier) { private fun NewChangesDot(modifier: Modifier = Modifier) {
val contentDescription = stringResource(R.string.fgs_dot_content_description) val contentDescription = stringResource(R.string.fgs_dot_content_description)
val color = LocalAndroidColorScheme.current.colorAccentTertiary val color = LocalAndroidColorScheme.current.deprecated.colorAccentTertiary
Canvas(modifier.size(12.dp).semantics { this.contentDescription = contentDescription }) { Canvas(modifier.size(12.dp).semantics { this.contentDescription = contentDescription }) {
drawCircle(color) drawCircle(color)
@@ -324,8 +324,9 @@ private fun TextButton(
Expandable( Expandable(
shape = CircleShape, shape = CircleShape,
color = colorAttr(R.attr.underSurfaceColor), color = colorAttr(R.attr.underSurfaceColor),
contentColor = LocalAndroidColorScheme.current.textColorSecondary, contentColor = LocalAndroidColorScheme.current.deprecated.textColorSecondary,
borderStroke = BorderStroke(1.dp, LocalAndroidColorScheme.current.colorBackground), borderStroke =
BorderStroke(1.dp, LocalAndroidColorScheme.current.deprecated.colorBackground),
modifier = modifier.padding(horizontal = 4.dp), modifier = modifier.padding(horizontal = 4.dp),
onClick = onClick, onClick = onClick,
) { ) {