From 26bb198790e1ad6b749b07512ad8158860e4631b Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Mon, 8 Jun 2020 15:38:01 -0700 Subject: [PATCH] Dark pointer for dark mode Add pointer colors to resource Fetch from resource based on dark mode config Fixes: 158482996 Test: manual - toggle dark mode on/off, select different bubbles, select overflow -> pointer updates color and position as expected Change-Id: Ie5d2613bcceabc665106d4422a9b33402ade54b8 --- packages/SystemUI/res/values/colors.xml | 4 ++++ .../systemui/bubbles/BubbleExpandedView.java | 15 +++++++++++++-- .../systemui/bubbles/BubbleOverflow.java | 3 +-- .../systemui/bubbles/BubbleStackView.java | 17 ++++++++++++++--- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 837627c02638f..4fc904b21741e 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -202,6 +202,10 @@ @color/GM2_grey_500 #40000000 + + #FFFFFF + @color/GM2_grey_800 + #F8F9FA #F1F3F4 diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java index c3dcc0b3038ca..8460cdf84f04b 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java @@ -42,6 +42,7 @@ import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; @@ -255,8 +256,6 @@ public class BubbleExpandedView extends LinearLayout { mPointerDrawable = new ShapeDrawable(TriangleShape.create( mPointerWidth, mPointerHeight, true /* pointUp */)); - mPointerDrawable.setTint(Color.WHITE); - mPointerView.setBackground(mPointerDrawable); mPointerView.setVisibility(INVISIBLE); mSettingsIconHeight = getContext().getResources().getDimensionPixelSize( @@ -352,6 +351,18 @@ public class BubbleExpandedView extends LinearLayout { mContext.getResources())) { mActivityView.setCornerRadius(cornerRadius); } + + final int mode = + getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + switch (mode) { + case Configuration.UI_MODE_NIGHT_NO: + mPointerDrawable.setTint(getResources().getColor(R.color.bubbles_pointer_light)); + break; + case Configuration.UI_MODE_NIGHT_YES: + mPointerDrawable.setTint(getResources().getColor(R.color.bubbles_pointer_dark)); + break; + } + mPointerView.setBackground(mPointerDrawable); } /** diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java index b77e2261e39ba..0c62e9f9f5482 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflow.java @@ -62,13 +62,12 @@ public class BubbleOverflow implements BubbleViewProvider { void setUpOverflow(ViewGroup parentViewGroup, BubbleStackView stackView) { updateDimensions(); - mExpandedView = (BubbleExpandedView) mInflater.inflate( R.layout.bubble_expanded_view, parentViewGroup /* root */, false /* attachToRoot */); mExpandedView.setOverflow(true); mExpandedView.setStackView(stackView); - + mExpandedView.applyThemeAttrs(); updateIcon(mContext, parentViewGroup); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java index 95c8d08841df1..d9bf2c99eb4b3 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java @@ -1097,13 +1097,11 @@ public class BubbleStackView extends FrameLayout mBubbleOverflow.setUpOverflow(mBubbleContainer, this); } else { mBubbleContainer.removeView(mBubbleOverflow.getBtn()); - mBubbleOverflow.updateDimensions(); - mBubbleOverflow.updateIcon(mContext,this); + mBubbleOverflow.setUpOverflow(mBubbleContainer, this); overflowBtnIndex = mBubbleContainer.getChildCount(); } mBubbleContainer.addView(mBubbleOverflow.getBtn(), overflowBtnIndex, new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)); - mBubbleOverflow.getBtn().setOnClickListener(v -> setSelectedBubble(mBubbleOverflow)); } /** @@ -1114,6 +1112,7 @@ public class BubbleStackView extends FrameLayout setUpOverflow(); setUpUserEducation(); setUpManageMenu(); + updateExpandedViewTheme(); } /** Respond to the phone being rotated by repositioning the stack and hiding any flyouts. */ @@ -1215,6 +1214,18 @@ public class BubbleStackView extends FrameLayout setupLocalMenu(info); } + void updateExpandedViewTheme() { + final List bubbles = mBubbleData.getBubbles(); + if (bubbles.isEmpty()) { + return; + } + bubbles.forEach(bubble -> { + if (bubble.getExpandedView() != null) { + bubble.getExpandedView().applyThemeAttrs(); + } + }); + } + void setupLocalMenu(AccessibilityNodeInfo info) { Resources res = mContext.getResources();