From a1cc4f0a8d9a70ff1515d1ddb1476f6ce630afe2 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Thu, 30 Sep 2010 17:57:23 +0900 Subject: [PATCH] Long pressing mic/comma key will show settings menue Bug: 3050703 Change-Id: I62773c10f435d13174f6ff6574912cb99303e83c --- java/res/values/bools.xml | 1 + .../inputmethod/latin/LatinKeyboardView.java | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml index 1f8051bfd..5a24e4c60 100644 --- a/java/res/values/bools.xml +++ b/java/res/values/bools.xml @@ -29,4 +29,5 @@ true true + true diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java index 2872f6b46..c4afd9a27 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.Context; +import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Paint; import android.inputmethodservice.Keyboard; @@ -41,6 +42,8 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { private Keyboard mPhoneKeyboard; + private final boolean mLongPressCommaForSettingsEnabled; + /** Whether we've started dropping move events because we found a big jump */ private boolean mDroppingEvents; /** @@ -54,11 +57,15 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { private int mLastRowY; public LatinKeyboardView(Context context, AttributeSet attrs) { - super(context, attrs); + this(context, attrs, 0); } public LatinKeyboardView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + + Resources res = context.getResources(); + mLongPressCommaForSettingsEnabled = res.getBoolean( + R.bool.config_long_press_comma_for_settings_enabled); } public void setPhoneKeyboard(Keyboard phoneKeyboard) { @@ -90,22 +97,25 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { protected boolean onLongPress(Key key) { int primaryCode = key.codes[0]; if (primaryCode == KEYCODE_OPTIONS) { - getOnKeyboardActionListener().onKey(KEYCODE_OPTIONS_LONGPRESS, null, - LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE, - LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE); - return true; + return invokeOnKey(KEYCODE_OPTIONS_LONGPRESS); } else if (primaryCode == '0' && getKeyboard() == mPhoneKeyboard) { // Long pressing on 0 in phone number keypad gives you a '+'. - getOnKeyboardActionListener().onKey( - '+', null, - LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE, - LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE); - return true; + return invokeOnKey('+'); + } else if (primaryCode == KEYCODE_VOICE + || (primaryCode == ',' && mLongPressCommaForSettingsEnabled)) { + return invokeOnKey(KEYCODE_OPTIONS); } else { return super.onLongPress(key); } } + private boolean invokeOnKey(int primaryCode) { + getOnKeyboardActionListener().onKey(primaryCode, null, + LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE, + LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE); + return true; + } + @Override protected CharSequence adjustCase(CharSequence label) { Keyboard keyboard = getKeyboard();