Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6408d81 authored by Satoshi Kataoka's avatar Satoshi Kataoka Committed by Android Git Automerger
Browse files

am a2bfd46a: Use internal personal dictionary settings on JBMR2 or before

* commit 'a2bfd46a':
  Use internal personal dictionary settings on JBMR2 or before
parents 67552eee a2bfd46a
Loading
Loading
Loading
Loading
+11 −6
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.AudioManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.ListPreference;
@@ -51,7 +52,10 @@ import java.util.TreeSet;
public final class SettingsFragment extends InputMethodSettingsFragment
public final class SettingsFragment extends InputMethodSettingsFragment
        implements SharedPreferences.OnSharedPreferenceChangeListener {
        implements SharedPreferences.OnSharedPreferenceChangeListener {
    private static final String TAG = SettingsFragment.class.getSimpleName();
    private static final String TAG = SettingsFragment.class.getSimpleName();
    private static final boolean DBG_USE_INTERNAL_USER_DICTIONARY_SETTINGS = false;
    private static final boolean DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = false;
    private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTIGS =
            DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS
                    || Build.VERSION.SDK_INT <= 18 /* Build.VERSION.JELLY_BEAN_MR2 */;


    private ListPreference mVoicePreference;
    private ListPreference mVoicePreference;
    private ListPreference mShowCorrectionSuggestionsPreference;
    private ListPreference mShowCorrectionSuggestionsPreference;
@@ -212,10 +216,11 @@ public final class SettingsFragment extends InputMethodSettingsFragment
        final Preference editPersonalDictionary =
        final Preference editPersonalDictionary =
                findPreference(Settings.PREF_EDIT_PERSONAL_DICTIONARY);
                findPreference(Settings.PREF_EDIT_PERSONAL_DICTIONARY);
        final Intent editPersonalDictionaryIntent = editPersonalDictionary.getIntent();
        final Intent editPersonalDictionaryIntent = editPersonalDictionary.getIntent();
        final ResolveInfo ri = context.getPackageManager().resolveActivity(
        final ResolveInfo ri = USE_INTERNAL_PERSONAL_DICTIONARY_SETTIGS ? null
                : context.getPackageManager().resolveActivity(
                        editPersonalDictionaryIntent, PackageManager.MATCH_DEFAULT_ONLY);
                        editPersonalDictionaryIntent, PackageManager.MATCH_DEFAULT_ONLY);
        if (DBG_USE_INTERNAL_USER_DICTIONARY_SETTINGS || ri == null) {
        if (ri == null) {
            updateUserDictionaryPreference(editPersonalDictionary);
            overwriteUserDictionaryPreference(editPersonalDictionary);
        }
        }


        if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
        if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
@@ -470,7 +475,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
        });
        });
    }
    }


    private void updateUserDictionaryPreference(Preference userDictionaryPreference) {
    private void overwriteUserDictionaryPreference(Preference userDictionaryPreference) {
        final Activity activity = getActivity();
        final Activity activity = getActivity();
        final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity);
        final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity);
        if (null == localeList) {
        if (null == localeList) {
+33 −5
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.inputmethod.latin.userdictionary;
package com.android.inputmethod.latin.userdictionary;


import android.app.Activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.database.Cursor;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Bundle;
@@ -25,10 +26,14 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.preference.PreferenceGroup;
import android.provider.UserDictionary;
import android.provider.UserDictionary;
import android.text.TextUtils;
import android.text.TextUtils;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;


import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.LocaleUtils;


import java.util.List;
import java.util.Locale;
import java.util.Locale;
import java.util.TreeSet;
import java.util.TreeSet;


@@ -52,7 +57,7 @@ public class UserDictionaryList extends PreferenceFragment {
        final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI,
        final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI,
                new String[] { UserDictionary.Words.LOCALE },
                new String[] { UserDictionary.Words.LOCALE },
                null, null, null);
                null, null, null);
        final TreeSet<String> localeList = new TreeSet<String>();
        final TreeSet<String> localeSet = new TreeSet<String>();
        boolean addedAllLocale = false;
        boolean addedAllLocale = false;
        if (null == cursor) {
        if (null == cursor) {
            // The user dictionary service is not present or disabled. Return null.
            // The user dictionary service is not present or disabled. Return null.
@@ -62,7 +67,7 @@ public class UserDictionaryList extends PreferenceFragment {
            do {
            do {
                final String locale = cursor.getString(columnIndex);
                final String locale = cursor.getString(columnIndex);
                final boolean allLocale = TextUtils.isEmpty(locale);
                final boolean allLocale = TextUtils.isEmpty(locale);
                localeList.add(allLocale ? "" : locale);
                localeSet.add(allLocale ? "" : locale);
                if (allLocale) {
                if (allLocale) {
                    addedAllLocale = true;
                    addedAllLocale = true;
                }
                }
@@ -71,10 +76,33 @@ public class UserDictionaryList extends PreferenceFragment {
        if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED && !addedAllLocale) {
        if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED && !addedAllLocale) {
            // For ICS, we need to show "For all languages" in case that the keyboard locale
            // For ICS, we need to show "For all languages" in case that the keyboard locale
            // is different from the system locale
            // is different from the system locale
            localeList.add("");
            localeSet.add("");
        }
        }
        localeList.add(Locale.getDefault().toString());

        return localeList;
        final InputMethodManager imm =
                (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        final List<InputMethodInfo> imis = imm.getEnabledInputMethodList();
        for (final InputMethodInfo imi : imis) {
            final List<InputMethodSubtype> subtypes =
                    imm.getEnabledInputMethodSubtypeList(
                            imi, true /* allowsImplicitlySelectedSubtypes */);
            for (InputMethodSubtype subtype : subtypes) {
                final String locale = subtype.getLocale();
                if (!TextUtils.isEmpty(locale)) {
                    localeSet.add(locale);
                }
            }
        }

        // We come here after we have collected locales from existing user dictionary entries and
        // enabled subtypes. If we already have the locale-without-country version of the system
        // locale, we don't add the system locale to avoid confusion even though it's technically
        // correct to add it.
        if (!localeSet.contains(Locale.getDefault().getLanguage().toString())) {
            localeSet.add(Locale.getDefault().toString());
        }

        return localeSet;
    }
    }


    /**
    /**