diff options
| author | Tadashi G. Takaoka <takaoka@google.com> | 2014-11-08 18:50:59 -0800 |
|---|---|---|
| committer | Tadashi G. Takaoka <takaoka@google.com> | 2014-11-08 18:50:59 -0800 |
| commit | 0d6ce46528c43b3060b14cc3096adb03f55e6f76 (patch) | |
| tree | c3672f059ae21152a2d9544de6a2d8b9772fbbc2 /java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java | |
| parent | a04380de6a6bcf250f3f69f6fab43ed5e3bc8c91 (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.java | 29 |
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; } } |
