diff options
author | Yorke Lee <yorkelee@google.com> | 2014-06-20 19:27:53 +0000 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2014-06-20 19:27:53 +0000 |
commit | 4aac9d221bd23ae582e44064ffcadc90d06b220d (patch) | |
tree | 99ba08066620c6cb6aba2c715cbf3eeb311cace2 /src/com/android/phone/common/dialpad/DialpadKeyButton.java | |
parent | c4a7bd9be54759105c0a9ea235ac5bda2c1b3f8f (diff) | |
download | packages_apps_PhoneCommon-4aac9d221bd23ae582e44064ffcadc90d06b220d.tar.gz packages_apps_PhoneCommon-4aac9d221bd23ae582e44064ffcadc90d06b220d.tar.bz2 packages_apps_PhoneCommon-4aac9d221bd23ae582e44064ffcadc90d06b220d.zip |
Revert "Update Emergency Dialer to match Dialer (5/5)."
This reverts commit c4a7bd9be54759105c0a9ea235ac5bda2c1b3f8f.
Change-Id: I9a81515783de2ab534a611c777f10b9376ca3b7a
Diffstat (limited to 'src/com/android/phone/common/dialpad/DialpadKeyButton.java')
-rw-r--r-- | src/com/android/phone/common/dialpad/DialpadKeyButton.java | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/src/com/android/phone/common/dialpad/DialpadKeyButton.java b/src/com/android/phone/common/dialpad/DialpadKeyButton.java deleted file mode 100644 index 4e3781c..0000000 --- a/src/com/android/phone/common/dialpad/DialpadKeyButton.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.phone.common.dialpad; - -import android.content.Context; -import android.graphics.Rect; -import android.os.Bundle; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewConfiguration; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; -import android.view.accessibility.AccessibilityNodeInfo; -import android.widget.FrameLayout; - -/** - * Custom class for dialpad buttons. - * <p> - * When touch exploration mode is enabled for accessibility, this class - * implements the lift-to-type interaction model: - * <ul> - * <li>Hovering over the button will cause it to gain accessibility focus - * <li>Removing the hover pointer while inside the bounds of the button will - * perform a click action - * <li>If long-click is supported, hovering over the button for a longer period - * of time will switch to the long-click action - * <li>Moving the hover pointer outside of the bounds of the button will restore - * to the normal click action - * <ul> - */ -public class DialpadKeyButton extends FrameLayout { - /** Timeout before switching to long-click accessibility mode. */ - private static final int LONG_HOVER_TIMEOUT = ViewConfiguration.getLongPressTimeout() * 2; - - /** Accessibility manager instance used to check touch exploration state. */ - private AccessibilityManager mAccessibilityManager; - - /** Bounds used to filter HOVER_EXIT events. */ - private Rect mHoverBounds = new Rect(); - - /** Whether this view is currently in the long-hover state. */ - private boolean mLongHovered; - - /** Alternate content description for long-hover state. */ - private CharSequence mLongHoverContentDesc; - - /** Backup of standard content description. Used for accessibility. */ - private CharSequence mBackupContentDesc; - - /** Backup of clickable property. Used for accessibility. */ - private boolean mWasClickable; - - /** Backup of long-clickable property. Used for accessibility. */ - private boolean mWasLongClickable; - - /** Runnable used to trigger long-click mode for accessibility. */ - private Runnable mLongHoverRunnable; - - public interface OnPressedListener { - public void onPressed(View view, boolean pressed); - } - - private OnPressedListener mOnPressedListener; - - public void setOnPressedListener(OnPressedListener onPressedListener) { - mOnPressedListener = onPressedListener; - } - - public DialpadKeyButton(Context context, AttributeSet attrs) { - super(context, attrs); - initForAccessibility(context); - } - - public DialpadKeyButton(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - initForAccessibility(context); - } - - private void initForAccessibility(Context context) { - mAccessibilityManager = (AccessibilityManager) context.getSystemService( - Context.ACCESSIBILITY_SERVICE); - } - - public void setLongHoverContentDescription(CharSequence contentDescription) { - mLongHoverContentDesc = contentDescription; - - if (mLongHovered) { - super.setContentDescription(mLongHoverContentDesc); - } - } - - @Override - public void setContentDescription(CharSequence contentDescription) { - if (mLongHovered) { - mBackupContentDesc = contentDescription; - } else { - super.setContentDescription(contentDescription); - } - } - - @Override - public void setPressed(boolean pressed) { - super.setPressed(pressed); - if (mOnPressedListener != null) { - mOnPressedListener.onPressed(this, pressed); - } - } - - @Override - public void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - - mHoverBounds.left = getPaddingLeft(); - mHoverBounds.right = w - getPaddingRight(); - mHoverBounds.top = getPaddingTop(); - mHoverBounds.bottom = h - getPaddingBottom(); - } - - @Override - public boolean performAccessibilityAction(int action, Bundle arguments) { - if (action == AccessibilityNodeInfo.ACTION_CLICK) { - simulateClickForAccessibility(); - return true; - } - - return super.performAccessibilityAction(action, arguments); - } - - @Override - public boolean onHoverEvent(MotionEvent event) { - // When touch exploration is turned on, lifting a finger while inside - // the button's hover target bounds should perform a click action. - if (mAccessibilityManager.isEnabled() - && mAccessibilityManager.isTouchExplorationEnabled()) { - switch (event.getActionMasked()) { - case MotionEvent.ACTION_HOVER_ENTER: - // Lift-to-type temporarily disables double-tap activation. - mWasClickable = isClickable(); - mWasLongClickable = isLongClickable(); - if (mWasLongClickable && mLongHoverContentDesc != null) { - if (mLongHoverRunnable == null) { - mLongHoverRunnable = new Runnable() { - @Override - public void run() { - setLongHovered(true); - announceForAccessibility(mLongHoverContentDesc); - } - }; - } - postDelayed(mLongHoverRunnable, LONG_HOVER_TIMEOUT); - } - - setClickable(false); - setLongClickable(false); - break; - case MotionEvent.ACTION_HOVER_EXIT: - if (mHoverBounds.contains((int) event.getX(), (int) event.getY())) { - if (mLongHovered) { - performLongClick(); - } else { - simulateClickForAccessibility(); - } - } - - cancelLongHover(); - setClickable(mWasClickable); - setLongClickable(mWasLongClickable); - break; - } - } - - return super.onHoverEvent(event); - } - - /** - * When accessibility is on, simulate press and release to preserve the - * semantic meaning of performClick(). Required for Braille support. - */ - private void simulateClickForAccessibility() { - // Checking the press state prevents double activation. - if (isPressed()) { - return; - } - - setPressed(true); - - // Stay consistent with performClick() by sending the event after - // setting the pressed state but before performing the action. - sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); - - setPressed(false); - } - - private void setLongHovered(boolean enabled) { - if (mLongHovered != enabled) { - mLongHovered = enabled; - - // Switch between normal and alternate description, if available. - if (enabled) { - mBackupContentDesc = getContentDescription(); - super.setContentDescription(mLongHoverContentDesc); - } else { - super.setContentDescription(mBackupContentDesc); - } - } - } - - private void cancelLongHover() { - if (mLongHoverRunnable != null) { - removeCallbacks(mLongHoverRunnable); - } - setLongHovered(false); - } -} |