aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-06-07 10:00:18 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-06-07 10:00:19 +0000
commitb0e0c5a8445afc814ed8865c4f4b9f61ada909a9 (patch)
tree1644407d0fcf2e746ecd63f5fa2551b97b745650 /java/src
parentd3c283d5db9259df17674bbe8c8eede9093d1da9 (diff)
parent254b484e75c059f7cf13d29b6bb312a07823597f (diff)
downloadlatinime-b0e0c5a8445afc814ed8865c4f4b9f61ada909a9.tar.gz
latinime-b0e0c5a8445afc814ed8865c4f4b9f61ada909a9.tar.xz
latinime-b0e0c5a8445afc814ed8865c4f4b9f61ada909a9.zip
Merge "Defer getting no language subtype"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/SubtypeSwitcher.java32
1 files changed, 20 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 282b5794f..1eca68ae5 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -43,20 +43,23 @@ public final class SubtypeSwitcher {
private static final String TAG = SubtypeSwitcher.class.getSimpleName();
private static final SubtypeSwitcher sInstance = new SubtypeSwitcher();
+
private /* final */ RichInputMethodManager mRichImm;
private /* final */ Resources mResources;
private /* final */ ConnectivityManager mConnectivityManager;
- /*-----------------------------------------------------------*/
- // Variants which should be changed only by reload functions.
- private NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
+ private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
private InputMethodInfo mShortcutInputMethodInfo;
private InputMethodSubtype mShortcutSubtype;
private InputMethodSubtype mNoLanguageSubtype;
- /*-----------------------------------------------------------*/
-
private boolean mIsNetworkConnected;
+ // Dummy no language QWERTY subtype. See {@link R.xml.method}.
+ private static final InputMethodSubtype DUMMY_NO_LANGUAGE_SUBTYPE = new InputMethodSubtype(
+ R.string.subtype_no_language_qwerty, R.drawable.ic_subtype_keyboard, "zz", "keyboard",
+ "KeyboardLayoutSet=qwerty,AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable",
+ false /* isAuxiliary */, false /* overridesImplicitlyEnabledSubtype */);
+
static final class NeedsToDisplayLanguage {
private int mEnabledSubtypeCount;
private boolean mIsSystemLanguageSameAsInputLanguage;
@@ -96,11 +99,6 @@ public final class SubtypeSwitcher {
mRichImm = RichInputMethodManager.getInstance();
mConnectivityManager = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
- mNoLanguageSubtype = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
- SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
- if (mNoLanguageSubtype == null) {
- throw new RuntimeException("Can't find no lanugage with QWERTY subtype");
- }
final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
mIsNetworkConnected = (info != null && info.isConnected());
@@ -255,10 +253,20 @@ public final class SubtypeSwitcher {
}
public InputMethodSubtype getCurrentSubtype() {
- return mRichImm.getCurrentInputMethodSubtype(mNoLanguageSubtype);
+ return mRichImm.getCurrentInputMethodSubtype(getNoLanguageSubtype());
}
public InputMethodSubtype getNoLanguageSubtype() {
- return mNoLanguageSubtype;
+ if (mNoLanguageSubtype == null) {
+ mNoLanguageSubtype = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+ SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
+ }
+ if (mNoLanguageSubtype != null) {
+ return mNoLanguageSubtype;
+ }
+ Log.w(TAG, "Can't find no lanugage with QWERTY subtype");
+ Log.w(TAG, "No input method subtype found; return dummy subtype: "
+ + DUMMY_NO_LANGUAGE_SUBTYPE);
+ return DUMMY_NO_LANGUAGE_SUBTYPE;
}
}