summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java20
5 files changed, 56 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index 08a6603..ccec759 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -44,6 +44,7 @@ public abstract class ExpandableView extends FrameLayout {
private int mClipTopOptimization;
private static Rect mClipRect = new Rect();
private boolean mWillBeGone;
+ private int mMinClipTopAmount = 0;
public ExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -400,6 +401,14 @@ public abstract class ExpandableView extends FrameLayout {
mWillBeGone = willBeGone;
}
+ public int getMinClipTopAmount() {
+ return mMinClipTopAmount;
+ }
+
+ public void setMinClipTopAmount(int minClipTopAmount) {
+ mMinClipTopAmount = minClipTopAmount;
+ }
+
/**
* A listener notifying when {@link #getActualHeight} changes.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index ea59ecd..b996724 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -941,6 +941,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
addPostCollapseAction(new Runnable() {
@Override
public void run() {
+ mStackScroller.setDismissAllInProgress(false);
try {
mBarService.onClearAllNotifications(mCurrentUserId);
} catch (Exception ex) { }
@@ -955,12 +956,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Runnable animationFinishAction = new Runnable() {
@Override
public void run() {
- mStackScroller.post(new Runnable() {
- @Override
- public void run() {
- mStackScroller.setDismissAllInProgress(false);
- }
- });
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
index 4a7ea96..3a97be6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
@@ -43,6 +43,7 @@ public class AmbientState {
private int mTopPadding;
private boolean mShadeExpanded;
private float mMaxHeadsUpTranslation;
+ private boolean mDismissAllInProgress;
public int getScrollY() {
return mScrollY;
@@ -183,4 +184,12 @@ public class AmbientState {
HeadsUpManager.HeadsUpEntry topEntry = mHeadsUpManager.getTopEntry();
return topEntry == null ? null : topEntry.entry.row;
}
+
+ public void setDismissAllInProgress(boolean dismissAllInProgress) {
+ mDismissAllInProgress = dismissAllInProgress;
+ }
+
+ public boolean isDismissAllInProgress() {
+ return mDismissAllInProgress;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index bde07de..0d89b21 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -773,8 +773,7 @@ public class NotificationStackScrollLayout extends ViewGroup
}
public boolean canChildBeDismissed(View v) {
- final View veto = v.findViewById(R.id.veto);
- return (veto != null && veto.getVisibility() != View.GONE);
+ return StackScrollAlgorithm.canChildBeDismissed(v);
}
@Override
@@ -2610,9 +2609,28 @@ public class NotificationStackScrollLayout extends ViewGroup
public void setDismissAllInProgress(boolean dismissAllInProgress) {
mDismissAllInProgress = dismissAllInProgress;
mDismissView.setDismissAllInProgress(dismissAllInProgress);
+ mAmbientState.setDismissAllInProgress(dismissAllInProgress);
if (dismissAllInProgress) {
disableClipOptimization();
}
+ handleDismissAllClipping();
+ }
+
+ private void handleDismissAllClipping() {
+ final int count = getChildCount();
+ boolean previousChildWillBeDismissed = false;
+ for (int i = 0; i < count; i++) {
+ ExpandableView child = (ExpandableView) getChildAt(i);
+ if (child.getVisibility() == GONE) {
+ continue;
+ }
+ if (mDismissAllInProgress && previousChildWillBeDismissed) {
+ child.setMinClipTopAmount(child.getClipTopAmount());
+ } else {
+ child.setMinClipTopAmount(0);
+ }
+ previousChildWillBeDismissed = canChildBeDismissed(child);
+ }
}
private void disableClipOptimization() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index 5c604b6..5d2e5b7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -202,6 +202,7 @@ public class StackScrollAlgorithm {
private void updateClipping(StackScrollState resultState,
StackScrollAlgorithmState algorithmState, AmbientState ambientState) {
+ boolean dismissAllInProgress = ambientState.isDismissAllInProgress();
float previousNotificationEnd = 0;
float previousNotificationStart = 0;
boolean previousNotificationIsSwiped = false;
@@ -237,16 +238,29 @@ public class StackScrollAlgorithm {
updateChildClippingAndBackground(state, newHeight, clipHeight,
newHeight - (previousNotificationStart - newYTranslation));
+ if (dismissAllInProgress) {
+ state.clipTopAmount = Math.max(child.getMinClipTopAmount(), state.clipTopAmount);
+ }
+
if (!child.isTransparent()) {
// Only update the previous values if we are not transparent,
// otherwise we would clip to a transparent view.
- previousNotificationStart = newYTranslation + state.clipTopAmount * state.scale;
- previousNotificationEnd = newNotificationEnd;
- previousNotificationIsSwiped = ambientState.getDraggedViews().contains(child);
+ if ((dismissAllInProgress && canChildBeDismissed(child))) {
+ previousNotificationIsSwiped = true;
+ } else {
+ previousNotificationIsSwiped = ambientState.getDraggedViews().contains(child);
+ previousNotificationEnd = newNotificationEnd;
+ previousNotificationStart = newYTranslation + state.clipTopAmount * state.scale;
+ }
}
}
}
+ public static boolean canChildBeDismissed(View v) {
+ final View veto = v.findViewById(R.id.veto);
+ return (veto != null && veto.getVisibility() != View.GONE);
+ }
+
/**
* Updates the shadow outline and the clipping for a view.
*