Merge "Ensure the menu items are properly recreated after a density change" into oc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
index 570de18..c09da21 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
@@ -67,7 +67,6 @@
private Context mContext;
private FrameLayout mMenuContainer;
- private MenuItem mSnoozeItem;
private MenuItem mInfoItem;
private ArrayList<MenuItem> mMenuItems;
private OnMenuEventListener mMenuListener;
@@ -86,9 +85,9 @@
private int[] mIconLocation = new int[2];
private int[] mParentLocation = new int[2];
- private float mHorizSpaceForIcon;
- private int mVertSpaceForIcons;
- private int mIconPadding;
+ private float mHorizSpaceForIcon = -1;
+ private int mVertSpaceForIcons = -1;
+ private int mIconPadding = -1;
private float mAlpha = 0f;
private float mPrevX;
@@ -104,17 +103,9 @@
public NotificationMenuRow(Context context) {
mContext = context;
- final Resources res = context.getResources();
- mShouldShowMenu = res.getBoolean(R.bool.config_showNotificationGear);
- mHorizSpaceForIcon = res.getDimensionPixelSize(R.dimen.notification_menu_icon_size);
- mVertSpaceForIcons = res.getDimensionPixelSize(R.dimen.notification_min_height);
- mIconPadding = res.getDimensionPixelSize(R.dimen.notification_menu_icon_padding);
+ mShouldShowMenu = context.getResources().getBoolean(R.bool.config_showNotificationGear);
mHandler = new Handler(Looper.getMainLooper());
mMenuItems = new ArrayList<>();
- mSnoozeItem = createSnoozeItem(context);
- mInfoItem = createInfoItem(context);
- mMenuItems.add(mSnoozeItem);
- mMenuItems.add(mInfoItem);
}
@Override
@@ -180,19 +171,24 @@
}
private void createMenuViews(boolean resetState) {
- // Filter the menu items based on the notification
+ final Resources res = mContext.getResources();
+ mHorizSpaceForIcon = res.getDimensionPixelSize(R.dimen.notification_menu_icon_size);
+ mVertSpaceForIcons = res.getDimensionPixelSize(R.dimen.notification_min_height);
+ mIconPadding = res.getDimensionPixelSize(R.dimen.notification_menu_icon_padding);
+ mMenuItems.clear();
+ // Construct the menu items based on the notification
if (mParent != null && mParent.getStatusBarNotification() != null) {
int flags = mParent.getStatusBarNotification().getNotification().flags;
boolean isForeground = (flags & Notification.FLAG_FOREGROUND_SERVICE) != 0;
- if (isForeground) {
- // Don't show snooze for foreground services
- mMenuItems.remove(mSnoozeItem);
- } else if (!mMenuItems.contains(mSnoozeItem)) {
- // Was a foreground service but is no longer, add snooze back
- mMenuItems.add(mSnoozeItem);
+ if (!isForeground) {
+ // Only show snooze for non-foreground notifications
+ mMenuItems.add(createSnoozeItem(mContext));
}
}
- // Recreate the menu
+ mInfoItem = createInfoItem(mContext);
+ mMenuItems.add(mInfoItem);
+
+ // Construct the menu views
if (mMenuContainer != null) {
mMenuContainer.removeAllViews();
} else {