lineage_patches_unified/patches_platform/frameworks_base/0029-SystemUI-Follow-light-dark-theme-in-SplitShade-Heade.patch
2024-05-26 18:45:23 +08:00

166 lines
7.5 KiB
Diff

From 901e7a826dcde851f61bd7811eceba2456fb9c25 Mon Sep 17 00:00:00 2001
From: ReallySnow <reallysnow233@gmail.com>
Date: Thu, 15 Sep 2022 13:38:48 +0800
Subject: [PATCH 29/34] SystemUI: Follow light/dark theme in SplitShade Header
* Google's default implementation is dark, which means
it doesn't need to follow the light/dark color change,
but we broke it, so add it to complete the SplitShade
Header color change
Co-authored-by: Col_or <col_or@qq.com>
Change-Id: I5464039885197eeb43bd31b822bfcba7a1b08776
---
.../systemui/shade/ShadeHeaderController.kt | 28 +++++++++++++++++++
.../systemui/shade/carrier/ShadeCarrier.java | 8 ++++++
.../shade/carrier/ShadeCarrierGroup.java | 16 +++++++++++
.../shade/ShadeHeaderControllerTest.kt | 1 +
4 files changed, 53 insertions(+)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt
index 593260996198..5a5cb792c10b 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt
@@ -21,8 +21,11 @@ import android.animation.AnimatorListenerAdapter
import android.annotation.IdRes
import android.app.PendingIntent
import android.app.StatusBarManager
+import android.content.Context
import android.content.Intent
+import android.content.res.ColorStateList
import android.content.res.Configuration
+import android.graphics.Color
import android.graphics.Insets
import android.os.Bundle
import android.os.Trace
@@ -91,6 +94,7 @@ constructor(
private val privacyIconsController: HeaderPrivacyIconsController,
private val insetsProvider: StatusBarContentInsetsProvider,
private val configurationController: ConfigurationController,
+ private val context: Context,
private val variableDateViewControllerFactory: VariableDateViewController.Factory,
@Named(SHADE_HEADER) private val batteryMeterViewController: BatteryMeterViewController,
private val dumpManager: DumpManager,
@@ -142,6 +146,7 @@ constructor(
private var cutout: DisplayCutout? = null
private var lastInsets: WindowInsets? = null
private var nextAlarmIntent: PendingIntent? = null
+ private var textColorPrimary = Color.TRANSPARENT
private var qsDisabled = false
private var visible = false
@@ -288,6 +293,10 @@ constructor(
updateCarrierGroupPadding()
clock.onDensityOrFontScaleChanged()
}
+
+ override fun onUiModeChanged() {
+ updateResources()
+ }
}
private val nextAlarmCallback =
@@ -341,6 +350,7 @@ constructor(
demoModeController.addCallback(demoModeReceiver)
statusBarIconController.addIconGroup(iconManager)
nextAlarmController.addCallback(nextAlarmCallback)
+ updateResources()
systemIconsHoverContainer.setOnHoverListener(
statusOverlayHoverListenerFactory.createListener(systemIconsHoverContainer)
)
@@ -544,6 +554,24 @@ constructor(
header.setPadding(padding, header.paddingTop, padding, header.paddingBottom)
updateQQSPaddings()
qsBatteryModeController.updateResources()
+
+ val textColor = Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimary)
+ val colorStateList = Utils.getColorAttr(context, android.R.attr.textColorPrimary)
+ if (textColor != textColorPrimary) {
+ val textColorSecondary = Utils.getColorAttrDefaultColor(context,
+ android.R.attr.textColorSecondary)
+ textColorPrimary = textColor
+ if (iconManager != null) {
+ iconManager.setTint(
+ textColorPrimary,
+ Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimaryInverse),
+ )
+ }
+ clock.setTextColor(textColorPrimary)
+ date.setTextColor(textColorPrimary)
+ mShadeCarrierGroup.updateColors(textColorPrimary, colorStateList)
+ batteryIcon.updateColors(textColorPrimary, textColorSecondary, textColorPrimary)
+ }
}
private fun updateQQSPaddings() {
diff --git a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrier.java b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrier.java
index 6ca0ad47a0a7..24a1e7cda1fd 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrier.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrier.java
@@ -152,6 +152,14 @@ public class ShadeCarrier extends LinearLayout {
com.android.settingslib.R.string.not_default_data_content_description));
}
+ public void updateColors(ColorStateList colorStateList) {
+ final boolean visible = !mIsSingleCarrier;
+ if (visible) {
+ mMobileRoaming.setImageTintList(colorStateList);
+ mMobileSignal.setImageTintList(colorStateList);
+ }
+ }
+
@VisibleForTesting
View getRSSIView() {
return mMobileGroup;
diff --git a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroup.java b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroup.java
index e84fb485829c..a5bcfeacff31 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroup.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/carrier/ShadeCarrierGroup.java
@@ -18,8 +18,11 @@ package com.android.systemui.shade.carrier;
import android.annotation.StyleRes;
import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.PorterDuff;
import android.util.AttributeSet;
import android.view.View;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -58,6 +61,19 @@ public class ShadeCarrierGroup extends LinearLayout {
return findViewById(R.id.shade_carrier_divider2);
}
+ public void updateColors(int color, ColorStateList colorStateList) {
+ getNoSimTextView().setTextColor(color);
+ ShadeCarrier[] shadeCarriers = { getCarrier1View(), getCarrier2View(), getCarrier3View() };
+ for (ShadeCarrier shadeCarrier : shadeCarriers) {
+ for (int i = 0; i < shadeCarrier.getChildCount(); i++) {
+ shadeCarrier.updateColors(colorStateList);
+ if (shadeCarrier.getChildAt(i) instanceof TextView) {
+ ((TextView) shadeCarrier.getChildAt(i)).setTextColor(color);
+ }
+ }
+ }
+ }
+
public void updateTextAppearance(@StyleRes int resId) {
FontSizeUtils.updateFontSizeFromStyle(getNoSimTextView(), resId);
getCarrier1View().updateTextAppearance(resId);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt
index 9fa173ab040a..de321ba62105 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt
@@ -189,6 +189,7 @@ class ShadeHeaderControllerTest : SysuiTestCase() {
privacyIconsController,
insetsProvider,
configurationController,
+ mockedContext,
variableDateViewControllerFactory,
batteryMeterViewController,
dumpManager,
--
2.34.1