OSDN Git Service

Remove the "user dictionary" settings entry if none
authorJean Chalard <jchalard@google.com>
Thu, 21 Jul 2011 09:33:20 +0000 (18:33 +0900)
committerJean Chalard <jchalard@google.com>
Thu, 21 Jul 2011 11:30:17 +0000 (20:30 +0900)
When the user dictionary service is not present or disabled,
the settings application should not be showing an entry to use it.

Bug: 5024166
Change-Id: Ic57d67eb03cf54e2c411fb0909c2a5d23d3e1fd7

src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
src/com/android/settings/inputmethod/UserDictionaryList.java

index 4ccebf0..e966ec7 100644 (file)
@@ -126,7 +126,12 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
     private void updateUserDictionaryPreference(Preference userDictionaryPreference) {
         final Activity activity = getActivity();
         final Set<String> localeList = UserDictionaryList.getUserDictionaryLocalesList(activity);
-        if (localeList.size() <= 1) {
+        if (null == localeList) {
+            // The locale list is null if and only if the user dictionary service is
+            // not present or disabled. In this case we need to remove the preference.
+            ((PreferenceGroup)findPreference("language_settings_category")).removePreference(
+                    userDictionaryPreference);
+        } else if (localeList.size() <= 1) {
             userDictionaryPreference.setTitle(R.string.user_dict_single_settings_title);
             userDictionaryPreference.setFragment(UserDictionarySettings.class.getName());
             // If the size of localeList is 0, we don't set the locale parameter in the
index c9a7ef9..e0afe48 100644 (file)
@@ -49,7 +49,10 @@ public class UserDictionaryList extends SettingsPreferenceFragment {
                 new String[] { UserDictionary.Words.LOCALE },
                 null, null, null);
         final Set<String> localeList = new TreeSet<String>();
-        if (null != cursor && cursor.moveToFirst()) {
+        if (null == cursor) {
+            // The user dictionary service is not present or disabled. Return null.
+            return null;
+        } else if (cursor.moveToFirst()) {
             final int columnIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE);
             do {
                 String locale = cursor.getString(columnIndex);