Loading src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +2 −14 Original line number Diff line number Diff line Loading @@ -758,22 +758,10 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment final int inputMethodCount = (inputMethods == null ? 0 : inputMethods.size()); for (int i = 0; i < inputMethodCount; ++i) { InputMethodInfo inputMethod = inputMethods.get(i); StringBuilder builder = new StringBuilder(); List<InputMethodSubtype> subtypes = inputMethodManager .getEnabledInputMethodSubtypeList(inputMethod, true); final int subtypeCount = subtypes.size(); for (int j = 0; j < subtypeCount; j++) { InputMethodSubtype subtype = subtypes.get(j); if (builder.length() > 0) { builder.append(','); } CharSequence subtypeLabel = subtype.getDisplayName(context, inputMethod.getPackageName(), inputMethod.getServiceInfo() .applicationInfo); builder.append(subtypeLabel); } String summary = builder.toString(); String summary = InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, context, inputMethod); ServiceInfo serviceInfo = inputMethod.getServiceInfo(); ComponentName componentName = new ComponentName(serviceInfo.packageName, Loading src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java +2 −2 Original line number Diff line number Diff line Loading @@ -189,8 +189,8 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment final InputMethodSubtype subtype = imi.getSubtypeAt(index); if (subtype.overridesImplicitlyEnabledSubtype()) { if (autoSubtypeLabel == null) { autoSubtypeLabel = subtype.getDisplayName( context, imi.getPackageName(), imi.getServiceInfo().applicationInfo); autoSubtypeLabel = InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence( subtype, context, imi); } } else { final Preference subtypePref = new InputMethodSubtypePreference( Loading src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java +58 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,13 @@ package com.android.settings.inputmethod; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.icu.text.ListFormatter; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.support.v7.preference.Preference; Loading @@ -28,12 +33,14 @@ import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.app.LocaleHelper; import com.android.internal.inputmethod.InputMethodUtils; import com.android.settings.SettingsPreferenceFragment; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; // TODO: Consolidate this with {@link InputMethodSettingValuesWrapper}. Loading Loading @@ -370,4 +377,55 @@ class InputMethodAndSubtypeUtil { prefs.edit().remove(key).apply(); } } @NonNull static String getSubtypeLocaleNameAsSentence(@Nullable InputMethodSubtype subtype, @NonNull final Context context, @NonNull final InputMethodInfo inputMethodInfo) { if (subtype == null) { return ""; } final Locale locale = getDisplayLocale(context); final CharSequence subtypeName = subtype.getDisplayName(context, inputMethodInfo.getPackageName(), inputMethodInfo.getServiceInfo() .applicationInfo); return LocaleHelper.toSentenceCase(subtypeName.toString(), locale); } @NonNull static String getSubtypeLocaleNameListAsSentence( @NonNull final List<InputMethodSubtype> subtypes, @NonNull final Context context, @NonNull final InputMethodInfo inputMethodInfo) { if (subtypes.isEmpty()) { return ""; } final Locale locale = getDisplayLocale(context); final int subtypeCount = subtypes.size(); final CharSequence[] subtypeNames = new CharSequence[subtypeCount]; for (int i = 0; i < subtypeCount; i++) { subtypeNames[i] = subtypes.get(i).getDisplayName(context, inputMethodInfo.getPackageName(), inputMethodInfo.getServiceInfo() .applicationInfo); } return LocaleHelper.toSentenceCase( ListFormatter.getInstance(locale).format(subtypeNames), locale); } @NonNull private static Locale getDisplayLocale(@Nullable final Context context) { if (context == null) { return Locale.getDefault(); } if (context.getResources() == null) { return Locale.getDefault(); } final Configuration configuration = context.getResources().getConfiguration(); if (configuration == null) { return Locale.getDefault(); } final Locale configurationLocale = configuration.getLocales().get(0); if (configurationLocale == null) { return Locale.getDefault(); } return configurationLocale; } } src/com/android/settings/inputmethod/InputMethodPreference.java +2 −10 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; import java.text.Collator; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading Loading @@ -213,17 +212,10 @@ class InputMethodPreference extends RestrictedSwitchPreference implements OnPref } private String getSummaryString() { final Context context = getContext(); final InputMethodManager imm = getInputMethodManager(); final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(mImi, true); final ArrayList<CharSequence> subtypeLabels = new ArrayList<>(); for (final InputMethodSubtype subtype : subtypes) { final CharSequence label = subtype.getDisplayName( context, mImi.getPackageName(), mImi.getServiceInfo().applicationInfo); subtypeLabels.add(label); } // TODO: A delimiter of subtype labels should be localized. return TextUtils.join(", ", subtypeLabels); return InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, getContext(), mImi); } private void showSecurityWarnDialog(final InputMethodInfo imi) { Loading src/com/android/settings/inputmethod/InputMethodSubtypePreference.java +2 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ class InputMethodSubtypePreference extends SwitchWithNoTextPreference { super(context); setPersistent(false); setKey(imi.getId() + subtype.hashCode()); final CharSequence subtypeLabel = subtype.getDisplayName(context, imi.getPackageName(), imi.getServiceInfo().applicationInfo); final CharSequence subtypeLabel = InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence(subtype, context, imi); setTitle(subtypeLabel); final String subtypeLocaleString = subtype.getLocale(); if (TextUtils.isEmpty(subtypeLocaleString)) { Loading Loading
src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +2 −14 Original line number Diff line number Diff line Loading @@ -758,22 +758,10 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment final int inputMethodCount = (inputMethods == null ? 0 : inputMethods.size()); for (int i = 0; i < inputMethodCount; ++i) { InputMethodInfo inputMethod = inputMethods.get(i); StringBuilder builder = new StringBuilder(); List<InputMethodSubtype> subtypes = inputMethodManager .getEnabledInputMethodSubtypeList(inputMethod, true); final int subtypeCount = subtypes.size(); for (int j = 0; j < subtypeCount; j++) { InputMethodSubtype subtype = subtypes.get(j); if (builder.length() > 0) { builder.append(','); } CharSequence subtypeLabel = subtype.getDisplayName(context, inputMethod.getPackageName(), inputMethod.getServiceInfo() .applicationInfo); builder.append(subtypeLabel); } String summary = builder.toString(); String summary = InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, context, inputMethod); ServiceInfo serviceInfo = inputMethod.getServiceInfo(); ComponentName componentName = new ComponentName(serviceInfo.packageName, Loading
src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java +2 −2 Original line number Diff line number Diff line Loading @@ -189,8 +189,8 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment final InputMethodSubtype subtype = imi.getSubtypeAt(index); if (subtype.overridesImplicitlyEnabledSubtype()) { if (autoSubtypeLabel == null) { autoSubtypeLabel = subtype.getDisplayName( context, imi.getPackageName(), imi.getServiceInfo().applicationInfo); autoSubtypeLabel = InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence( subtype, context, imi); } } else { final Preference subtypePref = new InputMethodSubtypePreference( Loading
src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java +58 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,13 @@ package com.android.settings.inputmethod; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.icu.text.ListFormatter; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.support.v7.preference.Preference; Loading @@ -28,12 +33,14 @@ import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.app.LocaleHelper; import com.android.internal.inputmethod.InputMethodUtils; import com.android.settings.SettingsPreferenceFragment; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; // TODO: Consolidate this with {@link InputMethodSettingValuesWrapper}. Loading Loading @@ -370,4 +377,55 @@ class InputMethodAndSubtypeUtil { prefs.edit().remove(key).apply(); } } @NonNull static String getSubtypeLocaleNameAsSentence(@Nullable InputMethodSubtype subtype, @NonNull final Context context, @NonNull final InputMethodInfo inputMethodInfo) { if (subtype == null) { return ""; } final Locale locale = getDisplayLocale(context); final CharSequence subtypeName = subtype.getDisplayName(context, inputMethodInfo.getPackageName(), inputMethodInfo.getServiceInfo() .applicationInfo); return LocaleHelper.toSentenceCase(subtypeName.toString(), locale); } @NonNull static String getSubtypeLocaleNameListAsSentence( @NonNull final List<InputMethodSubtype> subtypes, @NonNull final Context context, @NonNull final InputMethodInfo inputMethodInfo) { if (subtypes.isEmpty()) { return ""; } final Locale locale = getDisplayLocale(context); final int subtypeCount = subtypes.size(); final CharSequence[] subtypeNames = new CharSequence[subtypeCount]; for (int i = 0; i < subtypeCount; i++) { subtypeNames[i] = subtypes.get(i).getDisplayName(context, inputMethodInfo.getPackageName(), inputMethodInfo.getServiceInfo() .applicationInfo); } return LocaleHelper.toSentenceCase( ListFormatter.getInstance(locale).format(subtypeNames), locale); } @NonNull private static Locale getDisplayLocale(@Nullable final Context context) { if (context == null) { return Locale.getDefault(); } if (context.getResources() == null) { return Locale.getDefault(); } final Configuration configuration = context.getResources().getConfiguration(); if (configuration == null) { return Locale.getDefault(); } final Locale configurationLocale = configuration.getLocales().get(0); if (configurationLocale == null) { return Locale.getDefault(); } return configurationLocale; } }
src/com/android/settings/inputmethod/InputMethodPreference.java +2 −10 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; import java.text.Collator; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading Loading @@ -213,17 +212,10 @@ class InputMethodPreference extends RestrictedSwitchPreference implements OnPref } private String getSummaryString() { final Context context = getContext(); final InputMethodManager imm = getInputMethodManager(); final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(mImi, true); final ArrayList<CharSequence> subtypeLabels = new ArrayList<>(); for (final InputMethodSubtype subtype : subtypes) { final CharSequence label = subtype.getDisplayName( context, mImi.getPackageName(), mImi.getServiceInfo().applicationInfo); subtypeLabels.add(label); } // TODO: A delimiter of subtype labels should be localized. return TextUtils.join(", ", subtypeLabels); return InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, getContext(), mImi); } private void showSecurityWarnDialog(final InputMethodInfo imi) { Loading
src/com/android/settings/inputmethod/InputMethodSubtypePreference.java +2 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ class InputMethodSubtypePreference extends SwitchWithNoTextPreference { super(context); setPersistent(false); setKey(imi.getId() + subtype.hashCode()); final CharSequence subtypeLabel = subtype.getDisplayName(context, imi.getPackageName(), imi.getServiceInfo().applicationInfo); final CharSequence subtypeLabel = InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence(subtype, context, imi); setTitle(subtypeLabel); final String subtypeLocaleString = subtype.getLocale(); if (TextUtils.isEmpty(subtypeLocaleString)) { Loading