From 8c51ce24028d45eca82d6c8f766e51427f1a242d Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 21 Nov 2017 13:21:05 -0800 Subject: [PATCH] Brightness mirror should use QS theme Always re-inflate the brightness mirror using the quick settings theme. It's a child of the status bar window and needs the theme to be explicit. Change-Id: I342cda303feba4fa9c48afc0f119d8b74657dcd7 Fixes: 68366763 Test: Look at brightness slider using a dark wallpaper --- .../phone/KeyguardStatusBarView.java | 2 +- .../phone/NotificationPanelView.java | 2 +- .../systemui/statusbar/phone/StatusBar.java | 22 ++++++++++--------- .../phone/StatusBarKeyguardViewManager.java | 2 +- .../policy/BrightnessMirrorController.java | 17 +++++++------- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index a6691b1656df1..da809c12d16c1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -333,7 +333,7 @@ public class KeyguardStatusBarView extends RelativeLayout return false; } - public void onOverlayChanged() { + public void onThemeChanged() { @ColorInt int textColor = Utils.getColorAttr(mContext, R.attr.wallpaperTextColor); @ColorInt int iconColor = Utils.getDefaultColor(mContext, Color.luminance(textColor) < 0.5 ? R.color.dark_mode_icon_color_single_tone : diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 86a8f4115eee2..fff6abeecd923 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -330,7 +330,7 @@ public class NotificationPanelView extends PanelView implements } } - public void onOverlayChanged() { + public void onThemeChanged() { // Re-inflate the status view group. int index = indexOfChild(mKeyguardStatusView); removeView(mKeyguardStatusView); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 1bbb94a6532ce..43cc0f771a978 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -43,7 +43,6 @@ import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.KeyguardManager; import android.app.Notification; -import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.RemoteInput; @@ -80,7 +79,6 @@ import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.media.AudioAttributes; import android.media.MediaMetadata; -import android.media.session.MediaSessionManager; import android.metrics.LogMaker; import android.net.Uri; import android.os.AsyncTask; @@ -1230,13 +1228,13 @@ public class StatusBar extends SystemUI implements DemoMode, reevaluateStyles(); } - private void reinflateViews() { + private void onThemeChanged() { reevaluateStyles(); // Clock and bottom icons - mNotificationPanel.onOverlayChanged(); + mNotificationPanel.onThemeChanged(); // The status bar on the keyguard is a special layout. - if (mKeyguardStatusBar != null) mKeyguardStatusBar.onOverlayChanged(); + if (mKeyguardStatusBar != null) mKeyguardStatusBar.onThemeChanged(); // Recreate Indication controller because internal references changed mKeyguardIndicationController = SystemUIFactory.getInstance().createKeyguardIndicationController(mContext, @@ -1247,11 +1245,8 @@ public class StatusBar extends SystemUI implements DemoMode, .setStatusBarKeyguardViewManager(mStatusBarKeyguardViewManager); mKeyguardIndicationController.setVisible(mState == StatusBarState.KEYGUARD); mKeyguardIndicationController.setDozing(mDozing); - if (mBrightnessMirrorController != null) { - mBrightnessMirrorController.onOverlayChanged(); - } if (mStatusBarKeyguardViewManager != null) { - mStatusBarKeyguardViewManager.onOverlayChanged(); + mStatusBarKeyguardViewManager.onThemeChanged(); } if (mAmbientIndicationContainer instanceof AutoReinflateContainer) { ((AutoReinflateContainer) mAmbientIndicationContainer).inflateLayout(); @@ -1266,6 +1261,13 @@ public class StatusBar extends SystemUI implements DemoMode, updateEmptyShadeView(); } + @Override + public void onOverlayChanged() { + if (mBrightnessMirrorController != null) { + mBrightnessMirrorController.onOverlayChanged(); + } + } + private void updateNotificationsOnDensityOrFontScaleChanged() { ArrayList activeNotifications = mNotificationData.getActiveNotifications(); for (int i = 0; i < activeNotifications.size(); i++) { @@ -4387,7 +4389,7 @@ public class StatusBar extends SystemUI implements DemoMode, if (mContext.getThemeResId() != themeResId) { mContext.setTheme(themeResId); if (inflated) { - reinflateViews(); + onThemeChanged(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 09828dcd9dc9f..bcde556a59546 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -444,7 +444,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb hideBouncer(true /* destroyView */); } - public void onOverlayChanged() { + public void onThemeChanged() { hideBouncer(true /* destroyView */); mBouncer.prepare(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java index 42ce4c5bf2dce..b0553d72dd498 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.policy; import android.util.ArraySet; +import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewPropertyAnimator; @@ -51,8 +52,7 @@ public class BrightnessMirrorController mStatusBarWindow = statusBarWindow; mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror); mNotificationPanel = statusBarWindow.findViewById(R.id.notification_panel); - mStackScroller = (NotificationStackScrollLayout) statusBarWindow.findViewById( - R.id.notification_stack_scroller); + mStackScroller = statusBarWindow.findViewById(R.id.notification_stack_scroller); mScrimController = scrimController; } @@ -68,12 +68,9 @@ public class BrightnessMirrorController mScrimController.forceHideScrims(false /* hide */, true /* animated */); inAnimation(mNotificationPanel.animate()) .withLayer() - .withEndAction(new Runnable() { - @Override - public void run() { - mBrightnessMirror.setVisibility(View.INVISIBLE); - mStackScroller.setFadingOut(false); - } + .withEndAction(() -> { + mBrightnessMirror.setVisibility(View.INVISIBLE); + mStackScroller.setFadingOut(false); }); } @@ -128,9 +125,11 @@ public class BrightnessMirrorController } private void reinflate() { + ContextThemeWrapper qsThemeContext = + new ContextThemeWrapper(mBrightnessMirror.getContext(), R.style.qs_theme); int index = mStatusBarWindow.indexOfChild(mBrightnessMirror); mStatusBarWindow.removeView(mBrightnessMirror); - mBrightnessMirror = LayoutInflater.from(mBrightnessMirror.getContext()).inflate( + mBrightnessMirror = LayoutInflater.from(qsThemeContext).inflate( R.layout.brightness_mirror, mStatusBarWindow, false); mStatusBarWindow.addView(mBrightnessMirror, index);