For Matias.
<3, dsandler.
Bug: 7348917
Change-Id: I193a94ab82a9e59068c95624c2e8d375543f71f7
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 c832fb8..a857eba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -21,6 +21,8 @@
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.util.Slog;
+import android.view.MotionEvent;
import android.view.View;
import com.android.systemui.R;
@@ -31,11 +33,18 @@
Drawable mHandleBar;
float mHandleBarHeight;
View mHandleView;
+ int mFingers;
+ PhoneStatusBar mStatusBar;
+ private boolean mFlipped;
public NotificationPanelView(Context context, AttributeSet attrs) {
super(context, attrs);
}
+ public void setStatusBar(PhoneStatusBar bar) {
+ mStatusBar = bar;
+ }
+
@Override
protected void onFinishInflate() {
super.onFinishInflate();
@@ -79,4 +88,35 @@
mHandleBar.draw(canvas);
canvas.translate(0, -off);
}
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (PhoneStatusBar.SETTINGS_DRAG_SHORTCUT && mStatusBar.mHasFlipSettings) {
+ switch (event.getActionMasked()) {
+ case MotionEvent.ACTION_DOWN:
+ mFlipped = false;
+ break;
+ case MotionEvent.ACTION_POINTER_DOWN:
+ if (!mFlipped) {
+ float miny = event.getY(0);
+ float maxy = miny;
+ for (int i=1; i<event.getPointerCount(); i++) {
+ final float y = event.getY(i);
+ if (y < miny) miny = y;
+ if (y > maxy) maxy = y;
+ }
+ if (maxy - miny < mHandleBarHeight) {
+ if (getMeasuredHeight() < mHandleBarHeight) {
+ mStatusBar.switchToSettings();
+ } else {
+ mStatusBar.flipToSettings();
+ }
+ mFlipped = true;
+ }
+ }
+ break;
+ }
+ }
+ return mHandleView.dispatchTouchEvent(event);
+ }
}