am a514ea7e: Merge "Check all enabled IME\'s subtypes to enable personalization."

* commit 'a514ea7e1b39defc0a28b1acca00a2886478b0ed':
  Check all enabled IME's subtypes to enable personalization.
main
Keisuke Kuroyanagi 2014-02-20 01:38:15 -08:00 committed by Android Git Automerger
commit 7cf00033b8
2 changed files with 22 additions and 6 deletions

View File

@ -541,7 +541,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
shouldKeepUserHistoryDictionaries = true; shouldKeepUserHistoryDictionaries = true;
// TODO: Eliminate this restriction // TODO: Eliminate this restriction
shouldKeepPersonalizationDictionaries = shouldKeepPersonalizationDictionaries =
mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes(); mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes();
} else { } else {
shouldKeepUserHistoryDictionaries = false; shouldKeepUserHistoryDictionaries = false;
shouldKeepPersonalizationDictionaries = false; shouldKeepPersonalizationDictionaries = false;

View File

@ -37,9 +37,11 @@ import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.latin.utils.LocaleUtils; import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set;
public final class SubtypeSwitcher { public final class SubtypeSwitcher {
private static boolean DBG = LatinImeLogger.sDBG; private static boolean DBG = LatinImeLogger.sDBG;
@ -273,12 +275,26 @@ public final class SubtypeSwitcher {
return mNeedsToDisplayLanguage.getValue(); return mNeedsToDisplayLanguage.getValue();
} }
public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypes() { public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
final Locale systemLocale = mResources.getConfiguration().locale; final Locale systemLocale = mResources.getConfiguration().locale;
final List<InputMethodSubtype> enabledSubtypesOfThisIme = final Set<InputMethodSubtype> enabledSubtypesOfEnabledImes =
mRichImm.getMyEnabledInputMethodSubtypeList(true); new HashSet<InputMethodSubtype>();
for (final InputMethodSubtype subtype : enabledSubtypesOfThisIme) { final InputMethodManager inputMethodManager = mRichImm.getInputMethodManager();
if (!systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) { final List<InputMethodInfo> enabledInputMethodInfoList =
inputMethodManager.getEnabledInputMethodList();
for (final InputMethodInfo info : enabledInputMethodInfoList) {
final List<InputMethodSubtype> enabledSubtypes =
inputMethodManager.getEnabledInputMethodSubtypeList(
info, true /* allowsImplicitlySelectedSubtypes */);
if (enabledSubtypes.isEmpty()) {
// An IME with no subtypes is found.
return false;
}
enabledSubtypesOfEnabledImes.addAll(enabledSubtypes);
}
for (final InputMethodSubtype subtype : enabledSubtypesOfEnabledImes) {
if (!subtype.isAuxiliary() && !subtype.getLocale().isEmpty()
&& !systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
return false; return false;
} }
} }