From df2458002bf29154059d8de164bd5d8c926f7d24 Mon Sep 17 00:00:00 2001 From: Alexander Gramiak Date: Fri, 4 Nov 2022 14:46:00 -0600 Subject: [PATCH] For #27715: Allow FirefoxColors.copy to override some values This helps to reduce theme color duplication, making it easier to see which parameters differ. This also brings FirefoxColors closer to the upstream Compose Material Colors class. --- .../org/mozilla/fenix/theme/FirefoxTheme.kt | 141 +++++++++--------- detekt-baseline.xml | 1 - 2 files changed, 74 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/theme/FirefoxTheme.kt b/app/src/main/java/org/mozilla/fenix/theme/FirefoxTheme.kt index e9475726d..954af61b3 100644 --- a/app/src/main/java/org/mozilla/fenix/theme/FirefoxTheme.kt +++ b/app/src/main/java/org/mozilla/fenix/theme/FirefoxTheme.kt @@ -87,72 +87,6 @@ object FirefoxTheme { get() = defaultTypography } -private val privateColorPalette = FirefoxColors( - layer1 = PhotonColors.Ink50, - layer2 = PhotonColors.Ink50, - layer3 = PhotonColors.Ink50, - layer4Start = PhotonColors.Purple70, - layer4Center = PhotonColors.Violet80, - layer4End = PhotonColors.Ink05, - layerAccent = PhotonColors.Violet40, - layerAccentNonOpaque = PhotonColors.Violet50A32, - layerAccentOpaque = Color(0xFF423262), - scrim = PhotonColors.DarkGrey90A95, - gradientStart = PhotonColors.Violet70, - gradientEnd = PhotonColors.Violet40, - actionPrimary = PhotonColors.Violet60, - actionSecondary = PhotonColors.LightGrey30, - actionTertiary = PhotonColors.DarkGrey10, - actionQuarternary = PhotonColors.DarkGrey80, - formDefault = PhotonColors.LightGrey05, - formSelected = PhotonColors.Violet40, - formSurface = PhotonColors.DarkGrey05, - formDisabled = PhotonColors.DarkGrey05, - formOn = PhotonColors.Violet40, - formOff = PhotonColors.LightGrey05, - indicatorActive = PhotonColors.LightGrey90, - indicatorInactive = PhotonColors.DarkGrey05, - textPrimary = PhotonColors.LightGrey05, - textSecondary = PhotonColors.LightGrey40, - textDisabled = PhotonColors.LightGrey05A40, - textWarning = PhotonColors.Red20, - textWarningButton = PhotonColors.Red70, - textAccent = PhotonColors.Violet20, - textAccentDisabled = PhotonColors.Violet20A60, - textOnColorPrimary = PhotonColors.LightGrey05, - textOnColorSecondary = PhotonColors.LightGrey40, - textActionPrimary = PhotonColors.LightGrey05, - textActionSecondary = PhotonColors.DarkGrey90, - textActionTertiary = PhotonColors.LightGrey05, - textActionTertiaryActive = PhotonColors.LightGrey05, - iconPrimary = PhotonColors.LightGrey05, - iconPrimaryInactive = PhotonColors.LightGrey05A60, - iconSecondary = PhotonColors.LightGrey40, - iconActive = PhotonColors.Violet40, - iconDisabled = PhotonColors.LightGrey05A40, - iconOnColor = PhotonColors.LightGrey05, - iconNotice = PhotonColors.Blue30, - iconButton = PhotonColors.LightGrey05, - iconWarning = PhotonColors.Red20, - iconWarningButton = PhotonColors.Red70, - iconAccentViolet = PhotonColors.Violet20, - iconAccentBlue = PhotonColors.Blue20, - iconAccentPink = PhotonColors.Pink20, - iconAccentGreen = PhotonColors.Green20, - iconAccentYellow = PhotonColors.Yellow20, - iconActionPrimary = PhotonColors.LightGrey05, - iconActionSecondary = PhotonColors.DarkGrey90, - iconActionTertiary = PhotonColors.LightGrey05, - iconGradientStart = PhotonColors.Violet20, - iconGradientEnd = PhotonColors.Blue20, - borderPrimary = PhotonColors.DarkGrey05, - borderInverted = PhotonColors.LightGrey30, - borderFormDefault = PhotonColors.LightGrey05, - borderAccent = PhotonColors.Violet40, - borderDisabled = PhotonColors.LightGrey05A40, - borderWarning = PhotonColors.Red40, -) - private val darkColorPalette = FirefoxColors( layer1 = PhotonColors.DarkGrey60, layer2 = PhotonColors.DarkGrey30, @@ -285,6 +219,12 @@ private val lightColorPalette = FirefoxColors( borderWarning = PhotonColors.Red70, ) +private val privateColorPalette = darkColorPalette.copy( + layer1 = PhotonColors.Ink50, + layer2 = PhotonColors.Ink50, + layer3 = PhotonColors.Ink50, +) + /** * A custom Color Palette for Mozilla Firefox for Android (Fenix). */ @@ -669,7 +609,74 @@ class FirefoxColors( borderWarning = other.borderWarning } - fun copy(): FirefoxColors = FirefoxColors( + /** + * Return a copy of this [FirefoxColors] and optionally overriding any of the provided values. + */ + fun copy( + layer1: Color = this.layer1, + layer2: Color = this.layer2, + layer3: Color = this.layer3, + layer4Start: Color = this.layer4Start, + layer4Center: Color = this.layer4Center, + layer4End: Color = this.layer4End, + layerAccent: Color = this.layerAccent, + layerAccentNonOpaque: Color = this.layerAccentNonOpaque, + layerAccentOpaque: Color = this.layerAccentOpaque, + scrim: Color = this.scrim, + gradientStart: Color = this.gradientStart, + gradientEnd: Color = this.gradientEnd, + actionPrimary: Color = this.actionPrimary, + actionSecondary: Color = this.actionSecondary, + actionTertiary: Color = this.actionTertiary, + actionQuarternary: Color = this.actionQuarternary, + formDefault: Color = this.formDefault, + formSelected: Color = this.formSelected, + formSurface: Color = this.formSurface, + formDisabled: Color = this.formDisabled, + formOn: Color = this.formOn, + formOff: Color = this.formOff, + indicatorActive: Color = this.indicatorActive, + indicatorInactive: Color = this.indicatorInactive, + textPrimary: Color = this.textPrimary, + textSecondary: Color = this.textSecondary, + textDisabled: Color = this.textDisabled, + textWarning: Color = this.textWarning, + textWarningButton: Color = this.textWarningButton, + textAccent: Color = this.textAccent, + textAccentDisabled: Color = this.textAccentDisabled, + textOnColorPrimary: Color = this.textOnColorPrimary, + textOnColorSecondary: Color = this.textOnColorSecondary, + textActionPrimary: Color = this.textActionPrimary, + textActionSecondary: Color = this.textActionSecondary, + textActionTertiary: Color = this.textActionTertiary, + textActionTertiaryActive: Color = this.textActionTertiaryActive, + iconPrimary: Color = this.iconPrimary, + iconPrimaryInactive: Color = this.iconPrimaryInactive, + iconSecondary: Color = this.iconSecondary, + iconActive: Color = this.iconActive, + iconDisabled: Color = this.iconDisabled, + iconOnColor: Color = this.iconOnColor, + iconNotice: Color = this.iconNotice, + iconButton: Color = this.iconButton, + iconWarning: Color = this.iconWarning, + iconWarningButton: Color = this.iconWarningButton, + iconAccentViolet: Color = this.iconAccentViolet, + iconAccentBlue: Color = this.iconAccentBlue, + iconAccentPink: Color = this.iconAccentPink, + iconAccentGreen: Color = this.iconAccentGreen, + iconAccentYellow: Color = this.iconAccentYellow, + iconActionPrimary: Color = this.iconActionPrimary, + iconActionSecondary: Color = this.iconActionSecondary, + iconActionTertiary: Color = this.iconActionTertiary, + iconGradientStart: Color = this.iconGradientStart, + iconGradientEnd: Color = this.iconGradientEnd, + borderPrimary: Color = this.borderPrimary, + borderInverted: Color = this.borderInverted, + borderFormDefault: Color = this.borderFormDefault, + borderAccent: Color = this.borderAccent, + borderDisabled: Color = this.borderDisabled, + borderWarning: Color = this.borderWarning, + ): FirefoxColors = FirefoxColors( layer1 = layer1, layer2 = layer2, layer3 = layer3, diff --git a/detekt-baseline.xml b/detekt-baseline.xml index 82d166a5f..3e9af9a41 100644 --- a/detekt-baseline.xml +++ b/detekt-baseline.xml @@ -664,7 +664,6 @@ UndocumentedPublicFunction:FenixSnackbar.kt$FenixSnackbar$fun setLength(duration: Int) UndocumentedPublicFunction:FenixSnackbar.kt$FenixSnackbar$fun setText(text: String) UndocumentedPublicFunction:FirefoxTheme.kt$@Composable fun ProvideFirefoxColors( colors: FirefoxColors, content: @Composable () -> Unit, ) - UndocumentedPublicFunction:FirefoxTheme.kt$FirefoxColors$fun copy(): FirefoxColors UndocumentedPublicFunction:FirefoxTheme.kt$FirefoxColors$fun update(other: FirefoxColors) UndocumentedPublicFunction:Fragment.kt$fun Fragment.breadcrumb( message: String, data: Map<String, String> = emptyMap(), ) UndocumentedPublicFunction:Fragment.kt$fun Fragment.getPreferenceKey(@StringRes resourceId: Int): String