diff options
author | 2010-09-03 01:51:38 -0700 | |
---|---|---|
committer | 2010-09-03 01:51:38 -0700 | |
commit | 1b09ac4f93a0138a414094c374fa2ff12e39c71a (patch) | |
tree | 9efc4e259d794aa68dd38d9ddcfd51d6c353070e /java | |
parent | 5583cb0afcb2104a10689a1c60c051a99e98678b (diff) | |
parent | 9a6a4d3d5f1ee52b56d349c002aa61c264d010d3 (diff) | |
download | latinime-1b09ac4f93a0138a414094c374fa2ff12e39c71a.tar.gz latinime-1b09ac4f93a0138a414094c374fa2ff12e39c71a.tar.xz latinime-1b09ac4f93a0138a414094c374fa2ff12e39c71a.zip |
Merge "Add a showing input method picker option by longpressing setting key" into gingerbread
Diffstat (limited to 'java')
-rw-r--r-- | java/res/values/strings.xml | 5 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 43 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinKeyboardView.java | 8 |
3 files changed, 51 insertions, 5 deletions
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 09521146f..7b760f002 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -320,7 +320,10 @@ <!-- Menu item for launching Input method switcher --> <string name="inputMethod">Input method</string> - + + <!-- Menu item for launching Input method picker --> + <string name="selectInputMethod">Select input method</string> + <!-- Title for input language selection screen --> <string name="language_selection_title">Input languages</string> <!-- Title summary for input language selection screen --> diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index d0e6e69c7..3b4b4ffb0 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1083,6 +1083,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) { @@ -1102,12 +1136,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); @@ -2400,7 +2437,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, |