aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorsatok <satok@google.com>2010-09-03 01:55:37 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-09-03 01:55:37 -0700
commit6a36764a8d9c07509de41d69a13d661232236d7c (patch)
tree477862b4b5d63247e67c6195e39e6286c06280a9 /java/src
parent80e518d36be76e5b55b80dc2dbd286df872519b7 (diff)
parente5ae8c62c83ad29d623562a74355bc619c216742 (diff)
downloadlatinime-6a36764a8d9c07509de41d69a13d661232236d7c.tar.gz
latinime-6a36764a8d9c07509de41d69a13d661232236d7c.tar.xz
latinime-6a36764a8d9c07509de41d69a13d661232236d7c.zip
am e5ae8c62: am 1b09ac4f: Merge "Add a showing input method picker option by longpressing setting key" into gingerbread
Merge commit 'e5ae8c62c83ad29d623562a74355bc619c216742' * commit 'e5ae8c62c83ad29d623562a74355bc619c216742': Add a showing input method picker option by longpressing setting key
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java43
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardView.java8
2 files changed, 47 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5e210ac1c..f0e9e61d1 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1082,6 +1082,40 @@ public class LatinIME extends InputMethodService
}
}
+ private boolean hasMultipleEnabledIMEs() {
+ return ((InputMethodManager) getSystemService(
+ INPUT_METHOD_SERVICE)).getEnabledInputMethodList().size() > 1;
+ }
+
+ private void showInputMethodPicker() {
+ ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
+ .showInputMethodPicker();
+ }
+
+ private void onOptionKeyPressed() {
+ if (!isShowingOptionDialog()) {
+ if (hasMultipleEnabledIMEs()) {
+ showOptionsMenu();
+ } else {
+ launchSettings();
+ }
+ }
+ }
+
+ private void onOptionKeyLongPressed() {
+ if (!isShowingOptionDialog()) {
+ if (hasMultipleEnabledIMEs()) {
+ showInputMethodPicker();
+ } else {
+ launchSettings();
+ }
+ }
+ }
+
+ private boolean isShowingOptionDialog() {
+ return mOptionsDialog != null && mOptionsDialog.isShowing();
+ }
+
// Implementation of KeyboardViewListener
public void onKey(int primaryCode, int[] keyCodes, int x, int y) {
@@ -1101,12 +1135,15 @@ public class LatinIME extends InputMethodService
// Shift key is handled in onPress().
break;
case Keyboard.KEYCODE_CANCEL:
- if (mOptionsDialog == null || !mOptionsDialog.isShowing()) {
+ if (!isShowingOptionDialog()) {
handleClose();
}
break;
case LatinKeyboardView.KEYCODE_OPTIONS:
- showOptionsMenu();
+ onOptionKeyPressed();
+ break;
+ case LatinKeyboardView.KEYCODE_OPTIONS_LONGPRESS:
+ onOptionKeyLongPressed();
break;
case LatinKeyboardView.KEYCODE_NEXT_LANGUAGE:
toggleLanguage(false, true);
@@ -2398,7 +2435,7 @@ public class LatinIME extends InputMethodService
builder.setIcon(R.drawable.ic_dialog_keyboard);
builder.setNegativeButton(android.R.string.cancel, null);
CharSequence itemSettings = getString(R.string.english_ime_settings);
- CharSequence itemInputMethod = getString(R.string.inputMethod);
+ CharSequence itemInputMethod = getString(R.string.selectInputMethod);
builder.setItems(new CharSequence[] {
itemSettings, itemInputMethod},
new DialogInterface.OnClickListener() {
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 7a993669b..9236d6820 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -32,6 +32,7 @@ import java.util.List;
public class LatinKeyboardView extends LatinKeyboardBaseView {
static final int KEYCODE_OPTIONS = -100;
+ static final int KEYCODE_OPTIONS_LONGPRESS = -101;
static final int KEYCODE_VOICE = -102;
static final int KEYCODE_F1 = -103;
static final int KEYCODE_NEXT_LANGUAGE = -104;
@@ -76,7 +77,12 @@ public class LatinKeyboardView extends LatinKeyboardBaseView {
@Override
protected boolean onLongPress(Key key) {
- if (key.codes[0] == '0' && getKeyboard() == mPhoneKeyboard) {
+ if (key.codes[0] == KEYCODE_OPTIONS) {
+ getOnKeyboardActionListener().onKey(KEYCODE_OPTIONS_LONGPRESS, null,
+ LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE,
+ LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE);
+ return true;
+ } else if (key.codes[0] == '0' && getKeyboard() == mPhoneKeyboard) {
// Long pressing on 0 in phone number keypad gives you a '+'.
getOnKeyboardActionListener().onKey(
'+', null, LatinKeyboardBaseView.NOT_A_TOUCH_COORDINATE,