From 8304da460f95c0883eca0d97fcdc4eb42c10f7c2 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Mon, 25 Oct 2010 15:53:25 -0400 Subject: [PATCH] Swipe up to open the settings panel. Tap anywhere to close. This should help reduce false hits on the clock when typing on an on-screen keyboard. Change-Id: I3afab88c800873d1801b16ac79ffa3e7ddd42949 --- .../tablet/TabletStatusBarService.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java index d11aba67854c9..9fb29ac81cc99 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java @@ -39,6 +39,7 @@ import android.view.animation.AnimationUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -181,8 +182,9 @@ public class TabletStatusBarService extends StatusBarService { mCurtains = sb.findViewById(R.id.lights_out); mSystemInfo = sb.findViewById(R.id.systemInfo); - mSystemInfo.setOnClickListener(mOnClickListener); +// mSystemInfo.setOnClickListener(mOnClickListener); mSystemInfo.setOnLongClickListener(new SetLightsOnListener(false)); + mSystemInfo.setOnTouchListener(new ClockTouchListener()); mRecentButton = sb.findViewById(R.id.recent); mRecentButton.setOnClickListener(mOnClickListener); @@ -594,6 +596,34 @@ public class TabletStatusBarService extends StatusBarService { } } + private class ClockTouchListener implements View.OnTouchListener { + VelocityTracker mVT; + public boolean onTouch (View v, MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mVT = VelocityTracker.obtain(); + // fall through + case MotionEvent.ACTION_OUTSIDE: + case MotionEvent.ACTION_MOVE: + if (mVT == null) break; + mVT.addMovement(event); + mVT.computeCurrentVelocity(1000); + Slog.d("ClockTouchListener", "dy=" + mVT.getYVelocity()); + if (mVT.getYVelocity() < -200 && mSystemPanel.getVisibility() == View.GONE) { + mHandler.removeMessages(MSG_OPEN_SYSTEM_PANEL); + mHandler.sendEmptyMessage(MSG_OPEN_SYSTEM_PANEL); + } + return true; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + mVT.recycle(); + mVT = null; + return true; + } + return false; + } + } + private View.OnClickListener mOnClickListener = new View.OnClickListener() { public void onClick(View v) { if (v == mClearButton) {