OSDN Git Service

Fixed a bug where the icon of children could be colored
authorSelim Cinek <cinek@google.com>
Thu, 21 Apr 2016 22:26:10 +0000 (15:26 -0700)
committerSelim Cinek <cinek@google.com>
Thu, 21 Apr 2016 22:26:10 +0000 (15:26 -0700)
Change-Id: I12e577de648f8b1734521ffe713f0168f714572a
Fixes: 28320187

packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigPictureTemplateViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigTextTemplateViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationCustomViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTemplateViewWrapper.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java

index 6e9de23..2806729 100644 (file)
@@ -1346,7 +1346,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
             expandButton.setVisibility(VISIBLE);
             mNotificationHeader.setOnClickListener(mExpandClickListener);
             mNotificationHeaderWrapper = NotificationViewWrapper.wrap(getContext(),
-                    mNotificationHeader);
+                    mNotificationHeader, this);
             addView(mNotificationHeader, indexOfChild(mChildrenContainer) + 1);
             mTranslateableViews.add(mNotificationHeader);
         } else {
index eba393b..83f68e8 100644 (file)
@@ -307,7 +307,8 @@ public class NotificationContentView extends FrameLayout {
         addView(child);
         mContractedChild = child;
         mContractedChild.addOnLayoutChangeListener(mLayoutUpdater);
-        mContractedWrapper = NotificationViewWrapper.wrap(getContext(), child);
+        mContractedWrapper = NotificationViewWrapper.wrap(getContext(), child,
+                mContainingNotification);
         selectLayout(false /* animate */, true /* force */);
         mContractedWrapper.setDark(mDark, false /* animate */, 0 /* delay */);
     }
@@ -321,7 +322,8 @@ public class NotificationContentView extends FrameLayout {
         addView(child);
         mExpandedChild = child;
         mExpandedChild.addOnLayoutChangeListener(mLayoutUpdater);
-        mExpandedWrapper = NotificationViewWrapper.wrap(getContext(), child);
+        mExpandedWrapper = NotificationViewWrapper.wrap(getContext(), child,
+                mContainingNotification);
         selectLayout(false /* animate */, true /* force */);
     }
 
@@ -334,7 +336,8 @@ public class NotificationContentView extends FrameLayout {
         addView(child);
         mHeadsUpChild = child;
         mHeadsUpChild.addOnLayoutChangeListener(mLayoutUpdater);
-        mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child);
+        mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child,
+                mContainingNotification);
         selectLayout(false /* animate */, true /* force */);
     }
 
index c561601..6084770 100644 (file)
@@ -23,13 +23,16 @@ import android.os.Bundle;
 import android.service.notification.StatusBarNotification;
 import android.view.View;
 
+import com.android.systemui.statusbar.ExpandableNotificationRow;
+
 /**
  * Wraps a notification containing a big picture template
  */
 public class NotificationBigPictureTemplateViewWrapper extends NotificationTemplateViewWrapper {
 
-    protected NotificationBigPictureTemplateViewWrapper(Context ctx, View view) {
-        super(ctx, view);
+    protected NotificationBigPictureTemplateViewWrapper(Context ctx, View view,
+            ExpandableNotificationRow row) {
+        super(ctx, view, row);
     }
 
     @Override
index 487a7a0..3f49125 100644 (file)
@@ -21,6 +21,7 @@ import android.service.notification.StatusBarNotification;
 import android.view.View;
 
 import com.android.internal.widget.ImageFloatingTextView;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.TransformableView;
 
 /**
@@ -30,8 +31,9 @@ public class NotificationBigTextTemplateViewWrapper extends NotificationTemplate
 
     private ImageFloatingTextView mBigtext;
 
-    protected NotificationBigTextTemplateViewWrapper(Context ctx, View view) {
-        super(ctx, view);
+    protected NotificationBigTextTemplateViewWrapper(Context ctx, View view,
+            ExpandableNotificationRow row) {
+        super(ctx, view, row);
     }
 
     private void resolveViews(StatusBarNotification notification) {
index 49e4ba8..61df44a 100644 (file)
@@ -30,6 +30,7 @@ import android.view.View;
 
 import com.android.systemui.R;
 import com.android.systemui.ViewInvertHelper;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.phone.NotificationPanelView;
 
 /**
@@ -44,8 +45,8 @@ public class NotificationCustomViewWrapper extends NotificationViewWrapper {
     private boolean mShouldInvertDark;
     private boolean mShowingLegacyBackground;
 
-    protected NotificationCustomViewWrapper(View view) {
-        super(view);
+    protected NotificationCustomViewWrapper(View view, ExpandableNotificationRow row) {
+        super(view, row);
         mInvertHelper = new ViewInvertHelper(view, NotificationPanelView.DOZE_ANIMATION_DURATION);
     }
 
index b201d8f..1bfbaa2 100644 (file)
@@ -36,6 +36,7 @@ import android.widget.ImageView;
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
 import com.android.systemui.ViewInvertHelper;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.TransformableView;
 import com.android.systemui.statusbar.ViewTransformationHelper;
 import com.android.systemui.statusbar.phone.NotificationPanelView;
@@ -61,8 +62,8 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper {
     private ImageView mExpandButton;
     private NotificationHeaderView mNotificationHeader;
 
-    protected NotificationHeaderViewWrapper(Context ctx, View view) {
-        super(view);
+    protected NotificationHeaderViewWrapper(Context ctx, View view, ExpandableNotificationRow row) {
+        super(view, row);
         mIconDarkAlpha = ctx.getResources().getInteger(R.integer.doze_small_icon_alpha);
         mInvertHelper = new ViewInvertHelper(ctx, NotificationPanelView.DOZE_ANIMATION_DURATION);
         mTransformationHelper = new ViewTransformationHelper();
@@ -156,7 +157,9 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper {
         } else {
             mInvertHelper.update(dark);
         }
-        if (mIcon != null) {
+        if (mIcon != null && !mRow.isChildInGroup()) {
+            // We don't update the color for children views / their icon is invisible anyway.
+            // It also may lead to bugs where the icon isn't correctly greyed out.
             boolean hadColorFilter = mNotificationHeader.getOriginalIconColor()
                     != NotificationHeaderView.NO_COLOR;
             if (fade) {
index 30698e1..3c95a78 100644 (file)
@@ -20,6 +20,7 @@ import android.content.Context;
 import android.service.notification.StatusBarNotification;
 import android.view.View;
 
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.TransformableView;
 
 /**
@@ -27,8 +28,9 @@ import com.android.systemui.statusbar.TransformableView;
  */
 public class NotificationMediaTemplateViewWrapper extends NotificationTemplateViewWrapper {
 
-    protected NotificationMediaTemplateViewWrapper(Context ctx, View view) {
-        super(ctx, view);
+    protected NotificationMediaTemplateViewWrapper(Context ctx, View view,
+            ExpandableNotificationRow row) {
+        super(ctx, view, row);
     }
 
     View mActions;
index 78e23fc..889bd5c 100644 (file)
@@ -25,11 +25,10 @@ import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import com.android.systemui.Interpolators;
 import com.android.systemui.statusbar.CrossFadeHelper;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.TransformableView;
 import com.android.systemui.statusbar.ViewTransformationHelper;
-import com.android.systemui.statusbar.stack.StackStateAnimator;
 
 /**
  * Wraps a notification view inflated from a template.
@@ -43,8 +42,8 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp
     private TextView mTitle;
     private TextView mText;
 
-    protected NotificationTemplateViewWrapper(Context ctx, View view) {
-        super(ctx, view);
+    protected NotificationTemplateViewWrapper(Context ctx, View view, ExpandableNotificationRow row) {
+        super(ctx, view, row);
         mTransformationHelper.setCustomTransformation(
                 new ViewTransformationHelper.CustomTransformation() {
                     @Override
index ebff69d..7a0df1f 100644 (file)
@@ -26,7 +26,7 @@ import android.view.View;
 
 import com.android.systemui.Interpolators;
 import com.android.systemui.statusbar.CrossFadeHelper;
-import com.android.systemui.statusbar.NotificationContentView;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.TransformableView;
 import com.android.systemui.statusbar.phone.NotificationPanelView;
 
@@ -38,28 +38,30 @@ public abstract class NotificationViewWrapper implements TransformableView {
 
     protected final ColorMatrix mGrayscaleColorMatrix = new ColorMatrix();
     protected final View mView;
+    protected final ExpandableNotificationRow mRow;
     protected boolean mDark;
     protected boolean mDarkInitialized = false;
 
-    public static NotificationViewWrapper wrap(Context ctx, View v) {
+    public static NotificationViewWrapper wrap(Context ctx, View v, ExpandableNotificationRow row) {
         if (v.getId() == com.android.internal.R.id.status_bar_latest_event_content) {
             if ("bigPicture".equals(v.getTag())) {
-                return new NotificationBigPictureTemplateViewWrapper(ctx, v);
+                return new NotificationBigPictureTemplateViewWrapper(ctx, v, row);
             } else if ("bigText".equals(v.getTag())) {
-                return new NotificationBigTextTemplateViewWrapper(ctx, v);
+                return new NotificationBigTextTemplateViewWrapper(ctx, v, row);
             } else if ("media".equals(v.getTag()) || "bigMediaNarrow".equals(v.getTag())) {
-                return new NotificationMediaTemplateViewWrapper(ctx, v);
+                return new NotificationMediaTemplateViewWrapper(ctx, v, row);
             }
-            return new NotificationTemplateViewWrapper(ctx, v);
+            return new NotificationTemplateViewWrapper(ctx, v, row);
         } else if (v instanceof NotificationHeaderView) {
-            return new NotificationHeaderViewWrapper(ctx, v);
+            return new NotificationHeaderViewWrapper(ctx, v, row);
         } else {
-            return new NotificationCustomViewWrapper(v);
+            return new NotificationCustomViewWrapper(v, row);
         }
     }
 
-    protected NotificationViewWrapper(View view) {
+    protected NotificationViewWrapper(View view, ExpandableNotificationRow row) {
         mView = view;
+        mRow = row;
     }
 
     /**