summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/layout/qs_panel.xml19
-rw-r--r--packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java17
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt6
8 files changed, 41 insertions, 60 deletions
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 4527c6c793d5..89bf12d70b84 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -29,25 +29,6 @@
android:elevation="4dp"
android:background="@drawable/qs_background_primary" />
- <!-- Black part behind the status bar -->
- <View
- android:id="@+id/quick_settings_status_bar_background"
- android:layout_width="match_parent"
- android:layout_height="@*android:dimen/quick_qs_offset_height"
- android:clipToPadding="false"
- android:clipChildren="false"
- android:background="#ff000000" />
-
- <!-- Gradient view behind QS -->
- <View
- android:id="@+id/quick_settings_gradient_view"
- android:layout_width="match_parent"
- android:layout_height="126dp"
- android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
- android:clipToPadding="false"
- android:clipChildren="false"
- android:background="@drawable/qs_bg_gradient" />
-
<com.android.systemui.qs.NonInterceptingScrollView
android:id="@+id/expanded_qs_scroll_view"
android:layout_width="match_parent"
diff --git a/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml b/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
index 3c7480181877..f663ab4eb4aa 100644
--- a/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
+++ b/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
@@ -43,8 +43,7 @@
android:paddingStart="@dimen/status_bar_left_clock_starting_padding"
android:paddingEnd="@dimen/status_bar_left_clock_end_padding"
android:singleLine="true"
- android:textAppearance="@style/TextAppearance.StatusBar.Clock"
- systemui:showDark="false" />
+ android:textAppearance="@style/TextAppearance.StatusBar.Clock" />
</LinearLayout>
<android.widget.Space
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index 80bfa79aa753..f4571d7d3609 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -65,8 +65,6 @@ public class QSContainerImpl extends FrameLayout {
private View mQSPanelContainer;
private View mBackground;
- private View mBackgroundGradient;
- private View mStatusBarBackground;
private int mSideMargins;
private boolean mQsDisabled;
@@ -86,8 +84,6 @@ public class QSContainerImpl extends FrameLayout {
mQSCustomizer = findViewById(R.id.qs_customize);
mDragHandle = findViewById(R.id.qs_drag_handle_view);
mBackground = findViewById(R.id.quick_settings_background);
- mStatusBarBackground = findViewById(R.id.quick_settings_status_bar_background);
- mBackgroundGradient = findViewById(R.id.quick_settings_gradient_view);
mHeader.getHeaderQsPanel().setMediaVisibilityChangedListener((visible) -> {
if (mHeader.getHeaderQsPanel().isShown()) {
mAnimateBottomOnNextLayout = true;
@@ -117,7 +113,6 @@ public class QSContainerImpl extends FrameLayout {
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- setBackgroundGradientVisibility(newConfig);
mSizePoint.set(0, 0); // Will be retrieved on next measure pass.
}
@@ -186,7 +181,6 @@ public class QSContainerImpl extends FrameLayout {
final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
if (disabled == mQsDisabled) return;
mQsDisabled = disabled;
- setBackgroundGradientVisibility(getResources().getConfiguration());
mBackground.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE);
}
@@ -252,16 +246,6 @@ public class QSContainerImpl extends FrameLayout {
+ mHeader.getHeight();
}
- private void setBackgroundGradientVisibility(Configuration newConfig) {
- if (newConfig.orientation == ORIENTATION_LANDSCAPE) {
- mBackgroundGradient.setVisibility(View.INVISIBLE);
- mStatusBarBackground.setVisibility(View.INVISIBLE);
- } else {
- mBackgroundGradient.setVisibility(mQsDisabled ? View.INVISIBLE : View.VISIBLE);
- mStatusBarBackground.setVisibility(View.VISIBLE);
- }
- }
-
public void setExpansion(float expansion) {
mQsExpansion = expansion;
mDragHandle.setAlpha(1.0f - expansion);
@@ -271,8 +255,7 @@ public class QSContainerImpl extends FrameLayout {
private void updatePaddingsAndMargins(QSPanelController qsPanelController) {
for (int i = 0; i < getChildCount(); i++) {
View view = getChildAt(i);
- if (view == mStatusBarBackground || view == mBackgroundGradient
- || view == mQSCustomizer) {
+ if (view == mQSCustomizer) {
// Some views are always full width or have dependent padding
continue;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index e2748fcb2fc2..09894e58231a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -137,10 +137,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
updateResources();
- Rect tintArea = new Rect(0, 0, 0, 0);
- // Set light text on the header icons because they will always be on a black background
- applyDarkness(R.id.clock, tintArea, 0, DarkIconDispatcher.DEFAULT_ICON_TINT);
-
mClockView = findViewById(R.id.clock);
mSpace = findViewById(R.id.space);
@@ -158,7 +154,14 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
android.R.attr.colorForeground);
float intensity = getColorIntensity(colorForeground);
int fillColor = mDualToneHandler.getSingleColor(intensity);
+
+ Rect tintArea = new Rect(0, 0, 0, 0);
mBatteryRemainingIcon.onDarkChanged(tintArea, intensity, fillColor);
+
+ // The quick settings status bar clock depends on the color of the background scrim and
+ // can be different from the status bar clock color.
+ mClockView.setTextColor(
+ Utils.getColorAttrDefaultColor(mContext, R.attr.wallpaperTextColor));
}
void onAttach(TintedIconManager iconManager) {
@@ -231,13 +234,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn
!Objects.equals(originalAlarmText, mNextAlarmTextView.getText());
}
- private void applyDarkness(int id, Rect tintArea, float intensity, int color) {
- View v = findViewById(id);
- if (v instanceof DarkReceiver) {
- ((DarkReceiver) v).onDarkChanged(tintArea, intensity, color);
- }
- }
-
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java
index cb744f72ee98..5ee9df478342 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java
@@ -34,8 +34,10 @@ import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
+import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R;
+import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.plugins.ActivityStarter;
@@ -99,6 +101,9 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
private boolean mMicCameraIndicatorsEnabled;
private boolean mLocationIndicatorsEnabled;
private boolean mPrivacyChipLogged;
+
+ private SysuiColorExtractor mColorExtractor;
+ private ColorExtractor.OnColorsChangedListener mOnColorsChangedListener;
private int mRingerMode = AudioManager.RINGER_MODE_NORMAL;
private final ZenModeController.Callback mZenModeControllerCallback = new Callback() {
@@ -216,7 +221,8 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
CommandQueue commandQueue, DemoModeController demoModeController,
UserTracker userTracker, QuickQSPanelController quickQSPanelController,
QSCarrierGroupController.Builder qsCarrierGroupControllerBuilder,
- PrivacyLogger privacyLogger) {
+ PrivacyLogger privacyLogger,
+ SysuiColorExtractor colorExtractor) {
super(view);
mZenModeController = zenModeController;
mNextAlarmController = nextAlarmController;
@@ -246,6 +252,12 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
mIconManager = new StatusBarIconController.TintedIconManager(mIconContainer, mCommandQueue);
mDemoModeReceiver = new ClockDemoModeReceiver(mClockView);
+ mColorExtractor = colorExtractor;
+ mOnColorsChangedListener = (extractor, which) -> {
+ final boolean lightTheme = mColorExtractor.getNeutralColors().supportsDarkText();
+ mClockView.onColorsChanged(lightTheme);
+ };
+ mColorExtractor.addOnColorsChangedListener(mOnColorsChangedListener);
}
@Override
@@ -281,6 +293,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader
protected void onViewDetached() {
mRingerModeTracker.getRingerModeInternal().removeObservers(mLifecycleOwner);
mClockView.setOnClickListener(null);
+ mColorExtractor.removeOnColorsChangedListener(mOnColorsChangedListener);
mNextAlarmContainer.setOnClickListener(null);
mRingerContainer.setOnClickListener(null);
mPrivacyChip.setOnClickListener(null);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index 7c41bcd09b57..c0a5ffa1474e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -66,6 +66,7 @@ public class PhoneStatusBarView extends PanelBar {
}
};
private DarkReceiver mBattery;
+ private DarkReceiver mClock;
private int mRotationOrientation = -1;
@Nullable
private View mCenterIconSpace;
@@ -99,6 +100,7 @@ public class PhoneStatusBarView extends PanelBar {
@Override
public void onFinishInflate() {
mBattery = findViewById(R.id.battery);
+ mClock = findViewById(R.id.clock);
mCutoutSpace = findViewById(R.id.cutout_space_view);
mCenterIconSpace = findViewById(R.id.centered_icon_area);
@@ -110,6 +112,7 @@ public class PhoneStatusBarView extends PanelBar {
super.onAttachedToWindow();
// Always have Battery meters in the status bar observe the dark/light modes.
Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mBattery);
+ Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mClock);
if (updateOrientationAndCutout()) {
updateLayoutForCutout();
}
@@ -119,6 +122,7 @@ public class PhoneStatusBarView extends PanelBar {
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mBattery);
+ Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mClock);
mDisplayCutout = null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index ef35a3c55ab8..fbbf362f19d1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.policy;
+import android.annotation.ColorInt;
import android.app.StatusBarManager;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -35,6 +36,7 @@ import android.text.format.DateFormat;
import android.text.style.CharacterStyle;
import android.text.style.RelativeSizeSpan;
import android.util.AttributeSet;
+import android.view.ContextThemeWrapper;
import android.view.Display;
import android.view.View;
import android.widget.TextView;
@@ -96,7 +98,6 @@ public class Clock extends TextView implements
private static final int AM_PM_STYLE_GONE = 2;
private final int mAmPmStyle;
- private final boolean mShowDark;
private boolean mShowSeconds;
private Handler mSecondsHandler;
@@ -126,7 +127,6 @@ public class Clock extends TextView implements
0, 0);
try {
mAmPmStyle = a.getInt(R.styleable.Clock_amPmStyle, AM_PM_STYLE_GONE);
- mShowDark = a.getBoolean(R.styleable.Clock_showDark, true);
mNonAdaptedColor = getCurrentTextColor();
} finally {
a.recycle();
@@ -196,9 +196,6 @@ public class Clock extends TextView implements
Dependency.get(TunerService.class).addTunable(this, CLOCK_SECONDS,
StatusBarIconController.ICON_HIDE_LIST);
mCommandQueue.addCallback(this);
- if (mShowDark) {
- Dependency.get(DarkIconDispatcher.class).addDarkReceiver(this);
- }
mCurrentUserTracker.startTracking();
mCurrentUserId = mCurrentUserTracker.getCurrentUserId();
}
@@ -229,9 +226,6 @@ public class Clock extends TextView implements
mAttached = false;
Dependency.get(TunerService.class).removeTunable(this);
mCommandQueue.removeCallback(this);
- if (mShowDark) {
- Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(this);
- }
mCurrentUserTracker.stopTracking();
}
}
@@ -334,6 +328,13 @@ public class Clock extends TextView implements
}
}
+ // Update text color based when shade scrim changes color.
+ public void onColorsChanged(boolean lightTheme) {
+ final Context context = new ContextThemeWrapper(mContext,
+ lightTheme ? R.style.Theme_SystemUI_Light : R.style.Theme_SystemUI);
+ setTextColor(Utils.getColorAttrDefaultColor(context, R.attr.wallpaperTextColor));
+ }
+
@Override
public void onDensityOrFontScaleChanged() {
FontSizeUtils.updateFontSize(this, R.dimen.status_bar_clock_size);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
index 26b5d26387b4..d1cc75708a19 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
@@ -21,6 +21,7 @@ import android.testing.AndroidTestingRunner
import android.view.View
import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger
+import com.android.systemui.colorextraction.SysuiColorExtractor
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.demomode.DemoModeController
@@ -89,6 +90,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
@Mock
private lateinit var privacyLogger: PrivacyLogger
@Mock
+ private lateinit var colorExtractor: SysuiColorExtractor
+ @Mock
private lateinit var iconContainer: StatusIconContainer
@Mock
private lateinit var qsCarrierGroup: QSCarrierGroup
@@ -127,7 +130,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
userTracker,
quickQSPanelController,
qsCarrierGroupControllerBuilder,
- privacyLogger
+ privacyLogger,
+ colorExtractor
)
}