aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/deprecated/languageswitcher
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/deprecated/languageswitcher')
-rw-r--r--java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java55
1 files changed, 23 insertions, 32 deletions
diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
index 9ad64f876..6c6960cc4 100644
--- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
@@ -37,6 +37,7 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.text.TextUtils;
+import android.util.Pair;
import java.io.IOException;
import java.text.Collator;
@@ -88,14 +89,17 @@ public class InputLanguageSelection extends PreferenceActivity {
PreferenceGroup parent = getPreferenceScreen();
for (int i = 0; i < mAvailableLanguages.size(); i++) {
Locale locale = mAvailableLanguages.get(i).mLocale;
- if (!hasDictionary(locale) && !hasLayout(locale)) {
+ final Pair<Boolean, Boolean> hasDictionaryOrLayout = hasDictionaryOrLayout(locale);
+ final boolean hasDictionary = hasDictionaryOrLayout.first;
+ final boolean hasLayout = hasDictionaryOrLayout.second;
+ if (!hasDictionary && !hasLayout) {
continue;
}
CheckBoxPreference pref = new CheckBoxPreference(this);
pref.setTitle(SubtypeSwitcher.getFullDisplayName(locale, true));
boolean checked = isLocaleIn(locale, languageList);
pref.setChecked(checked);
- if (hasDictionary(locale)) {
+ if (hasDictionary) {
pref.setSummary(R.string.has_dictionary);
}
parent.addPreference(pref);
@@ -110,52 +114,39 @@ public class InputLanguageSelection extends PreferenceActivity {
return false;
}
- private boolean hasDictionary(Locale locale) {
+ private Pair<Boolean, Boolean> hasDictionaryOrLayout(Locale locale) {
+ if (locale == null) return new Pair<Boolean, Boolean>(false, false);
final Resources res = getResources();
final Configuration conf = res.getConfiguration();
final Locale saveLocale = conf.locale;
- boolean haveDictionary = false;
conf.locale = locale;
res.updateConfiguration(conf, res.getDisplayMetrics());
+ boolean hasDictionary = false;
+ boolean hasLayout = false;
- BinaryDictionary bd = BinaryDictionary.initDictionaryFromManager(this, Suggest.DIC_MAIN,
- locale, Utils.getMainDictionaryResourceId(res));
-
- // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
- // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
- if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
- haveDictionary = true;
- }
- bd.close();
- conf.locale = saveLocale;
- res.updateConfiguration(conf, res.getDisplayMetrics());
- return haveDictionary;
- }
+ try {
+ BinaryDictionary bd = BinaryDictionary.initDictionaryFromManager(this, Suggest.DIC_MAIN,
+ locale, Utils.getMainDictionaryResourceId(res));
- private boolean hasLayout(Locale locale) {
- if (locale == null) return false;
- final Resources res = getResources();
- final Configuration conf = res.getConfiguration();
- final Locale saveLocale = conf.locale;
- conf.locale = locale;
- res.updateConfiguration(conf, res.getDisplayMetrics());
+ // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
+ // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
+ if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
+ hasDictionary = true;
+ }
+ bd.close();
- try {
final String countryCode = locale.getLanguage();
final String layoutCountryCode = KeyboardParser.parseKeyboardLocale(
this, R.xml.kbd_qwerty);
if (!TextUtils.isEmpty(countryCode) && !TextUtils.isEmpty(layoutCountryCode)) {
- return countryCode.subSequence(0, 2).equals(layoutCountryCode.substring(0, 2));
+ hasLayout = countryCode.subSequence(0, 2).equals(layoutCountryCode.substring(0, 2));
}
- return false;
} catch (XmlPullParserException e) {
- return false;
} catch (IOException e) {
- return false;
- } finally {
- conf.locale = saveLocale;
- res.updateConfiguration(conf, res.getDisplayMetrics());
}
+ conf.locale = saveLocale;
+ res.updateConfiguration(conf, res.getDisplayMetrics());
+ return new Pair<Boolean, Boolean>(hasDictionary, hasLayout);
}
private String get5Code(Locale locale) {