Implement two-finger pull down to QS.
Bug: 14590707
Change-Id: I7f88a5b26e88c79e19d4e6c7f4cc8277ffcb2d57
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index e0a1ef1..55b3088 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -126,6 +126,8 @@
private boolean mBlockTouches;
private ArrayList<View> mSwipeTranslationViews = new ArrayList<>();
private int mNotificationScrimWaitDistance;
+ private boolean mTwoFingerQsExpand;
+ private boolean mTwoFingerQsExpandPossible;
/**
* If we are in a panel collapsing motion, we reset scrollY of our scroll view but still
@@ -487,7 +489,7 @@
if (mExpandedHeight != 0) {
handleQsDown(event);
}
- if (mQsTracking || mQsExpanded) {
+ if (!mTwoFingerQsExpand && (mQsTracking || mQsExpanded)) {
onQsTouch(event);
if (!mConflictingQsExpansionGesture) {
return true;
@@ -497,6 +499,15 @@
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
mConflictingQsExpansionGesture = false;
}
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN && mExpandedHeight == 0) {
+ mTwoFingerQsExpandPossible = true;
+ }
+ if (mTwoFingerQsExpandPossible && event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
+ && event.getPointerCount() == 2
+ && event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
+ mTwoFingerQsExpand = true;
+ requestPanelHeightUpdate();
+ }
super.onTouchEvent(event);
return true;
}
@@ -842,7 +853,7 @@
min = Math.max(min, minHeight);
}
int maxHeight;
- if (mQsExpanded || mIsExpanding && mQsExpandedWhenExpandingStarted) {
+ if (mTwoFingerQsExpand || mQsExpanded || mIsExpanding && mQsExpandedWhenExpandingStarted) {
maxHeight = (int) calculatePanelHeightQsExpanded();
} else {
int emptyBottomMargin = mNotificationStackScroller.getEmptyBottomMargin();
@@ -863,7 +874,7 @@
if (!mQsExpanded) {
positionClockAndNotifications();
}
- if (mQsExpanded && !mQsTracking && mQsExpansionAnimator == null
+ if (mTwoFingerQsExpand || mQsExpanded && !mQsTracking && mQsExpansionAnimator == null
&& !mQsExpansionFromOverscroll) {
float panelHeightQsCollapsed = mNotificationStackScroller.getIntrinsicPadding()
+ mNotificationStackScroller.getMinStackHeight()
@@ -1049,6 +1060,8 @@
mHeader.setListening(true);
mQsPanel.setListening(true);
}
+ mTwoFingerQsExpand = false;
+ mTwoFingerQsExpandPossible = false;
}
@Override
@@ -1060,7 +1073,7 @@
@Override
protected void setOverExpansion(float overExpansion, boolean isPixels) {
- if (mConflictingQsExpansionGesture) {
+ if (mConflictingQsExpansionGesture || mTwoFingerQsExpand) {
return;
}
if (mStatusBar.getBarState() != StatusBarState.KEYGUARD) {