summaryrefslogtreecommitdiff
path: root/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-11-08 18:50:59 -0800
committerTadashi G. Takaoka <takaoka@google.com>2014-11-08 18:50:59 -0800
commit0d6ce46528c43b3060b14cc3096adb03f55e6f76 (patch)
treec3672f059ae21152a2d9544de6a2d8b9772fbbc2 /java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
parenta04380de6a6bcf250f3f69f6fab43ed5e3bc8c91 (diff)
Move logic to determine spacebar text to LanguageOnSpacebarHelper
Change-Id: Ib9dbbb4bd4e35c15fd752c364d3012e8a7da2410
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java b/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
index 21eaed950..2a70ef51a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
@@ -25,6 +25,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Locale;
+import javax.annotation.Nonnull;
+
/**
* This class determines that the language name on the spacebar should be displayed in what format.
*/
@@ -37,7 +39,7 @@ public final class LanguageOnSpacebarHelper {
private List<InputMethodSubtype> mEnabledSubtypes = Collections.emptyList();
private boolean mIsSystemLanguageSameAsInputLanguage;
- public int getLanguageOnSpacebarFormatType(final RichInputMethodSubtype subtype) {
+ public int getLanguageOnSpacebarFormatType(@Nonnull final RichInputMethodSubtype subtype) {
if (subtype.isNoLanguage()) {
return FORMAT_TYPE_FULL_LOCALE;
}
@@ -65,11 +67,30 @@ public final class LanguageOnSpacebarHelper {
: FORMAT_TYPE_LANGUAGE_ONLY;
}
- public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
+ public void onUpdateEnabledSubtypes(@Nonnull final List<InputMethodSubtype> enabledSubtypes) {
mEnabledSubtypes = enabledSubtypes;
}
- public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
- mIsSystemLanguageSameAsInputLanguage = isSame;
+ public void onSubtypeChanged(@Nonnull final RichInputMethodSubtype subtype,
+ final boolean implicitlyEnabledSubtype, @Nonnull final Locale systemLocale) {
+ final Locale[] newLocales = subtype.getLocales();
+ if (newLocales.length > 1) {
+ // In multi-locales mode, the system language is never the same as the input language
+ // because there is no single input language.
+ mIsSystemLanguageSameAsInputLanguage = false;
+ return;
+ }
+ final Locale newLocale = newLocales[0];
+ if (systemLocale.equals(newLocale)) {
+ mIsSystemLanguageSameAsInputLanguage = true;
+ return;
+ }
+ if (!systemLocale.getLanguage().equals(newLocale.getLanguage())) {
+ mIsSystemLanguageSameAsInputLanguage = false;
+ return;
+ }
+ // If the subtype is enabled explicitly, the language name should be displayed even when
+ // the keyboard language and the system language are equal.
+ mIsSystemLanguageSameAsInputLanguage = implicitlyEnabledSubtype;
}
}