aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java9
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java6
-rw-r--r--java/src/com/android/inputmethod/latin/SubtypeSwitcher.java16
3 files changed, 22 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java
index 7aab66d05..8e2ee0f7a 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java
@@ -73,16 +73,17 @@ public class InputMethodServiceCompatWrapper extends InputMethodService {
// This call is required to let LatinIME itself know a subtype changed
// event when the API level is 10 or previous.
@SuppressWarnings("unused")
- public void notifyOnCurrentInputMethodSubtypeChanged(InputMethodSubtypeCompatWrapper subtype) {
+ public void notifyOnCurrentInputMethodSubtypeChanged(
+ InputMethodSubtypeCompatWrapper newSubtype) {
// Do nothing when the API level is 11 or later
// and FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES is not true
if (CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED && !InputMethodManagerCompatWrapper.
FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES) {
return;
}
- if (subtype == null) {
- subtype = mImm.getCurrentInputMethodSubtype();
- }
+ final InputMethodSubtypeCompatWrapper subtype = (newSubtype == null)
+ ? mImm.getCurrentInputMethodSubtype()
+ : newSubtype;
if (subtype != null) {
if (!InputMethodManagerCompatWrapper.FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES
&& !subtype.isDummy()) return;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 7559108f3..da6c22107 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -118,6 +118,12 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
*/
public static final String SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE = "AsciiCapable";
+ /**
+ * The subtype extra value used to indicate that the subtype keyboard layout should be loaded
+ * from the specified locale.
+ */
+ public static final String SUBTYPE_EXTRA_VALUE_KEYBOARD_LOCALE = "KeyboardLocale";
+
private static final int EXTENDED_TOUCHABLE_REGION_HEIGHT = 100;
// How many continuous deletes at which to start deleting at a higher speed.
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 87d854940..a60f444fb 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -138,7 +138,7 @@ public class SubtypeSwitcher {
mEnabledLanguagesOfCurrentInputMethod.clear();
mEnabledKeyboardSubtypesOfCurrentInputMethod.clear();
for (InputMethodSubtypeCompatWrapper ims : mAllEnabledSubtypesOfCurrentInputMethod) {
- final String locale = ims.getLocale();
+ final String locale = getSubtypeLocale(ims);
final String mode = ims.getMode();
mLocaleSplitter.setString(locale);
if (mLocaleSplitter.hasNext()) {
@@ -167,7 +167,7 @@ public class SubtypeSwitcher {
Log.d(TAG, "Update shortcut IME from : "
+ (mShortcutInputMethodInfo == null
? "<null>" : mShortcutInputMethodInfo.getId()) + ", "
- + (mShortcutSubtype == null ? "<null>" : (mShortcutSubtype.getLocale()
+ + (mShortcutSubtype == null ? "<null>" : (getSubtypeLocale(mShortcutSubtype)
+ ", " + mShortcutSubtype.getMode())));
}
// TODO: Update an icon for shortcut IME
@@ -189,11 +189,17 @@ public class SubtypeSwitcher {
Log.d(TAG, "Update shortcut IME to : "
+ (mShortcutInputMethodInfo == null
? "<null>" : mShortcutInputMethodInfo.getId()) + ", "
- + (mShortcutSubtype == null ? "<null>" : (mShortcutSubtype.getLocale()
+ + (mShortcutSubtype == null ? "<null>" : (getSubtypeLocale(mShortcutSubtype)
+ ", " + mShortcutSubtype.getMode())));
}
}
+ private static String getSubtypeLocale(InputMethodSubtypeCompatWrapper subtype) {
+ final String keyboardLocale = subtype.getExtraValueOf(
+ LatinIME.SUBTYPE_EXTRA_VALUE_KEYBOARD_LOCALE);
+ return keyboardLocale != null ? keyboardLocale : subtype.getLocale();
+ }
+
// Update the current subtype. LatinIME.onCurrentInputMethodSubtypeChanged calls this function.
public void updateSubtype(InputMethodSubtypeCompatWrapper newSubtype) {
final String newLocale;
@@ -206,7 +212,7 @@ public class SubtypeSwitcher {
newLocale = "en_US";
newMode = KEYBOARD_MODE;
} else {
- newLocale = newSubtype.getLocale();
+ newLocale = getSubtypeLocale(newSubtype);
newMode = newSubtype.getMode();
}
if (DBG) {
@@ -332,7 +338,7 @@ public class SubtypeSwitcher {
final String imiPackageName = imi.getPackageName();
if (DBG) {
Log.d(TAG, "Update icons of IME: " + imiPackageName + ","
- + subtype.getLocale() + "," + subtype.getMode());
+ + getSubtypeLocale(subtype) + "," + subtype.getMode());
}
if (subtype != null) {
return pm.getDrawable(imiPackageName, subtype.getIconResId(),