diff options
9 files changed, 43 insertions, 28 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 6e9de231e48e..2806729b835a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -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 { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java index eba393bfb7c6..83f68e81bca7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java @@ -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 */); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigPictureTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigPictureTemplateViewWrapper.java index c5616010defb..6084770f5db5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigPictureTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigPictureTemplateViewWrapper.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigTextTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigTextTemplateViewWrapper.java index 487a7a03974e..3f4912550407 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigTextTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationBigTextTemplateViewWrapper.java @@ -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) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationCustomViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationCustomViewWrapper.java index 49e4ba8a83f5..61df44acbc50 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationCustomViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationCustomViewWrapper.java @@ -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); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java index b201d8fe68d9..1bfbaa228532 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java @@ -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) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java index 30698e109178..3c95a786f8cd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTemplateViewWrapper.java index 78e23fce1a3e..889bd5cac7a5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTemplateViewWrapper.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java index ebff69da46d1..7a0df1f54c64 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java @@ -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; } /** |