Merge "Define the Compose MaterialTheme for SystemUI" into udc-dev
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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,
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user