From 49a11524fc165542c211487485bcc4967ce27660 Mon Sep 17 00:00:00 2001 From: satok Date: Thu, 21 Apr 2011 19:42:56 +0900 Subject: [PATCH 1/2] Fix language selection settings Change-Id: I99e2039579a5bd606a8e698cdee2739465b998bc --- java/res/xml/prefs.xml | 7 ------- java/src/com/android/inputmethod/compat/CompatUtils.java | 5 +++-- java/src/com/android/inputmethod/latin/Settings.java | 8 ++------ 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index fb7b0ea40..cbfc3c39d 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -64,13 +64,6 @@ android:key="subtype_settings" android:title="@string/language_selection_title" android:summary="@string/language_selection_summary" /> - - - = /* android.os.Build.VERSION_CODES.HONEYCOMB */ 11) { + if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED + /* android.os.Build.VERSION_CODES.HONEYCOMB */ + && android.os.Build.VERSION.SDK_INT >= 11) { // Refer to android.provider.Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS action = INPUT_METHOD_SUBTYPE_SETTINGS; intent = new Intent(action); diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index 1725ee7aa..6a0b7b009 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -68,7 +68,6 @@ public class Settings extends PreferenceActivity public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold"; public static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; public static final String PREF_DEBUG_SETTINGS = "debug_settings"; - public static final String PREF_LANGUAGE_SELECTION = "language_selection"; public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode"; @@ -152,7 +151,8 @@ public class Settings extends PreferenceActivity final boolean showSubtypeSettings = getResources().getBoolean( R.bool.config_enable_show_subtype_settings); - if (!showSubtypeSettings) { + if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED + && !showSubtypeSettings) { generalSettings.removePreference(findPreference(PREF_SUBTYPES)); } @@ -185,10 +185,6 @@ public class Settings extends PreferenceActivity if (!showUsabilityModeStudyOption) { getPreferenceScreen().removePreference(findPreference(PREF_USABILITY_STUDY_MODE)); } - - if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { - generalSettings.removePreference(findPreference(PREF_LANGUAGE_SELECTION)); - } } @Override From 1b9eecb521862b4e75b0a34623efdc98087d75ba Mon Sep 17 00:00:00 2001 From: satok Date: Thu, 21 Apr 2011 21:16:18 +0900 Subject: [PATCH 2/2] Fix language selection settings Change-Id: I84e51ce2b80a21650e309e5e6c9ee5f1739170c9 --- java/res/xml-de/kbd_qwerty.xml | 2 +- java/res/xml-fr/kbd_qwerty.xml | 2 +- java/res/xml-ru/kbd_qwerty.xml | 2 +- java/res/xml/kbd_qwerty.xml | 2 +- .../InputLanguageSelection.java | 34 ++++++++++++------- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml index 6b5c22391..e6569667d 100644 --- a/java/res/xml-de/kbd_qwerty.xml +++ b/java/res/xml-de/kbd_qwerty.xml @@ -28,7 +28,7 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" - latin:keyboardLocale="de" + latin:keyboardLocale="de_DE" > diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml index e4b73bf21..2f8e67bb1 100644 --- a/java/res/xml-fr/kbd_qwerty.xml +++ b/java/res/xml-fr/kbd_qwerty.xml @@ -28,7 +28,7 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" - latin:keyboardLocale="fr" + latin:keyboardLocale="fr_FR" > diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml index 065cf3afc..e5aea581e 100644 --- a/java/res/xml-ru/kbd_qwerty.xml +++ b/java/res/xml-ru/kbd_qwerty.xml @@ -27,7 +27,7 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" - latin:keyboardLocale="ru" + latin:keyboardLocale="ru_RU" > diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml index 6bf6b781d..a4251c0bd 100644 --- a/java/res/xml/kbd_qwerty.xml +++ b/java/res/xml/kbd_qwerty.xml @@ -28,7 +28,7 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" - latin:keyboardLocale="en" + latin:keyboardLocale="en_GB,en_US" > diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java index 6c6960cc4..ce576d0cc 100644 --- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java +++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java @@ -43,13 +43,15 @@ import java.io.IOException; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.Locale; public class InputLanguageSelection extends PreferenceActivity { private SharedPreferences mPrefs; private String mSelectedLanguages; - private ArrayList mAvailableLanguages = new ArrayList(); + private HashMap mLocaleMap = + new HashMap(); private static class Loc implements Comparable { private static Collator sCollator = Collator.getInstance(); @@ -85,14 +87,17 @@ public class InputLanguageSelection extends PreferenceActivity { mPrefs = PreferenceManager.getDefaultSharedPreferences(this); mSelectedLanguages = mPrefs.getString(Settings.PREF_SELECTED_LANGUAGES, ""); String[] languageList = mSelectedLanguages.split(","); - mAvailableLanguages = getUniqueLocales(); + ArrayList availableLanguages = getUniqueLocales(); PreferenceGroup parent = getPreferenceScreen(); - for (int i = 0; i < mAvailableLanguages.size(); i++) { - Locale locale = mAvailableLanguages.get(i).mLocale; + for (int i = 0; i < availableLanguages.size(); i++) { + Locale locale = availableLanguages.get(i).mLocale; final Pair hasDictionaryOrLayout = hasDictionaryOrLayout(locale); final boolean hasDictionary = hasDictionaryOrLayout.first; final boolean hasLayout = hasDictionaryOrLayout.second; - if (!hasDictionary && !hasLayout) { + // Add this locale to the supported list if: + // 1) this locale has a layout/ 2) this locale has a dictionary and the length + // of the locale is equal to or larger than 5. + if (!hasLayout && !(hasDictionary && locale.toString().length() >= 5)) { continue; } CheckBoxPreference pref = new CheckBoxPreference(this); @@ -102,6 +107,7 @@ public class InputLanguageSelection extends PreferenceActivity { if (hasDictionary) { pref.setSummary(R.string.has_dictionary); } + mLocaleMap.put(pref, locale); parent.addPreference(pref); } } @@ -135,11 +141,16 @@ public class InputLanguageSelection extends PreferenceActivity { } bd.close(); - final String countryCode = locale.getLanguage(); - final String layoutCountryCode = KeyboardParser.parseKeyboardLocale( - this, R.xml.kbd_qwerty); - if (!TextUtils.isEmpty(countryCode) && !TextUtils.isEmpty(layoutCountryCode)) { - hasLayout = countryCode.subSequence(0, 2).equals(layoutCountryCode.substring(0, 2)); + final String localeStr = locale.toString(); + final String[] layoutCountryCodes = KeyboardParser.parseKeyboardLocale( + this, R.xml.kbd_qwerty).split(",", -1); + if (!TextUtils.isEmpty(localeStr) && layoutCountryCodes.length > 0) { + for (String s : layoutCountryCodes) { + if (s.equals(localeStr)) { + hasLayout = true; + break; + } + } } } catch (XmlPullParserException e) { } catch (IOException e) { @@ -170,8 +181,7 @@ public class InputLanguageSelection extends PreferenceActivity { for (int i = 0; i < count; i++) { CheckBoxPreference pref = (CheckBoxPreference) parent.getPreference(i); if (pref.isChecked()) { - Locale locale = mAvailableLanguages.get(i).mLocale; - checkedLanguages += get5Code(locale) + ","; + checkedLanguages += get5Code(mLocaleMap.get(pref)) + ","; } } if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null