diff options
author | Daniel Sandler <dsandler@google.com> | 2011-03-01 17:49:18 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-01 17:49:18 -0800 |
commit | d7ba12135bf3e1985961a75648f80bb9eb121e1e (patch) | |
tree | 3ef3c27622917649401f76989f9e67fefccb27e4 | |
parent | e0edf4c1a230a82cee47f2b30e2ee2f749f2dd56 (diff) | |
parent | aa051d66afa791872bfe362a94765dece07cd4c5 (diff) | |
download | frameworks_base-d7ba12135bf3e1985961a75648f80bb9eb121e1e.zip frameworks_base-d7ba12135bf3e1985961a75648f80bb9eb121e1e.tar.gz frameworks_base-d7ba12135bf3e1985961a75648f80bb9eb121e1e.tar.bz2 |
Merge "Make with the clicky. (Status bar buttons now play FX.)"
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java | 23 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java | 32 |
2 files changed, 41 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index 8ab231b..e81cec2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -25,12 +25,14 @@ import android.os.SystemClock; import android.os.ServiceManager; import android.util.AttributeSet; import android.util.Slog; +import android.view.accessibility.AccessibilityEvent; import android.view.HapticFeedbackConstants; import android.view.IWindowManager; import android.view.InputDevice; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.ViewConfiguration; import android.widget.ImageView; import android.widget.RemoteViews.RemoteView; @@ -45,6 +47,8 @@ public class KeyButtonView extends ImageView { boolean mSending; int mCode; int mRepeat; + int mTouchSlop; + Runnable mCheckLongPress = new Runnable() { public void run() { if (isPressed()) { @@ -53,6 +57,9 @@ public class KeyButtonView extends ImageView { KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY | KeyEvent.FLAG_LONG_PRESS); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); + //playSoundEffect(SoundEffectConstants.CLICK); } } }; @@ -78,6 +85,7 @@ public class KeyButtonView extends ImageView { ServiceManager.getService(Context.WINDOW_SERVICE)); setClickable(true); + mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); } public boolean onTouchEvent(MotionEvent ev) { @@ -100,7 +108,10 @@ public class KeyButtonView extends ImageView { if (mSending) { x = (int)ev.getX(); y = (int)ev.getY(); - setPressed(x >= 0 && x < getWidth() && y >= 0 && y < getHeight()); + setPressed(x >= -mTouchSlop + && x < getWidth() + mTouchSlop + && y >= -mTouchSlop + && y < getHeight() + mTouchSlop); } break; case MotionEvent.ACTION_CANCEL: @@ -114,12 +125,18 @@ public class KeyButtonView extends ImageView { } break; case MotionEvent.ACTION_UP: + final boolean doIt = isPressed(); setPressed(false); if (mSending) { mSending = false; - sendEvent(KeyEvent.ACTION_UP, - KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY); removeCallbacks(mCheckLongPress); + if (doIt) { + sendEvent(KeyEvent.ACTION_UP, + KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + playSoundEffect(SoundEffectConstants.CLICK); + } } break; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index c123cea..5ab808c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -42,11 +42,13 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.text.TextUtils; import android.util.Slog; +import android.view.accessibility.AccessibilityEvent; import android.view.Gravity; import android.view.IWindowManager; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; @@ -1181,6 +1183,8 @@ public class TabletStatusBar extends StatusBar implements // dragging off the bottom doesn't count && (int)event.getY() < v.getBottom()) { animateExpand(); + v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + v.playSoundEffect(SoundEffectConstants.CLICK); } mVT.recycle(); @@ -1264,17 +1268,23 @@ public class TabletStatusBar extends StatusBar implements case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); - if (action == MotionEvent.ACTION_UP - // was this a sloppy tap? - && Math.abs(event.getX() - mInitialTouchX) < mTouchSlop - && Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3) - // dragging off the bottom doesn't count - && (int)event.getY() < v.getBottom()) { - Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK); - peekMsg.arg1 = mPeekIndex; - mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); - mHandler.sendMessage(peekMsg); - peeking = true; // not technically true yet, but the next line will run + if (!peeking) { + if (action == MotionEvent.ACTION_UP + // was this a sloppy tap? + && Math.abs(event.getX() - mInitialTouchX) < mTouchSlop + && Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3) + // dragging off the bottom doesn't count + && (int)event.getY() < v.getBottom()) { + Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK); + peekMsg.arg1 = mPeekIndex; + mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK); + mHandler.sendMessage(peekMsg); + + v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + v.playSoundEffect(SoundEffectConstants.CLICK); + + peeking = true; // not technically true yet, but the next line will run + } } if (peeking) { |