Loading src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java +54 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; Loading @@ -33,9 +34,14 @@ import android.os.Bundle; import android.support.v7.preference.PreferenceScreen; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import java.text.Collator; import java.util.ArrayList; Loading @@ -44,7 +50,7 @@ import java.util.Comparator; import java.util.List; public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFragment implements InputMethodPreference.OnSavePreferenceListener { implements InputMethodPreference.OnSavePreferenceListener, Indexable { private final ArrayList<InputMethodPreference> mInputMethodPreferenceList = new ArrayList<>(); private InputMethodSettingValuesWrapper mInputMethodSettingValues; Loading Loading @@ -169,4 +175,51 @@ public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFr pref.updatePreferenceViews(); } } private static List<InputMethodSubtype> getAllSubtypesOf(final InputMethodInfo imi) { final int subtypeCount = imi.getSubtypeCount(); final List<InputMethodSubtype> allSubtypes = new ArrayList<>(subtypeCount); for (int index = 0; index < subtypeCount; index++) { allSubtypes.add(imi.getSubtypeAt(index)); } return allSubtypes; } static List<SearchIndexableRaw> buildSearchIndexOfInputMethods(final Context context, final List<InputMethodInfo> inputMethods, final String screenTitle) { final List<SearchIndexableRaw> indexes = new ArrayList<>(); final InputMethodManager imm = (InputMethodManager) context.getSystemService( Context.INPUT_METHOD_SERVICE); for (int i = 0; i < inputMethods.size(); i++) { final InputMethodInfo imi = inputMethods.get(i); final ServiceInfo serviceInfo = imi.getServiceInfo(); final SearchIndexableRaw index = new SearchIndexableRaw(context); index.key = new ComponentName(serviceInfo.packageName, serviceInfo.name) .flattenToString(); index.title = imi.loadLabel(context.getPackageManager()).toString(); index.summaryOn = index.summaryOff = InputMethodAndSubtypeUtil .getSubtypeLocaleNameListAsSentence(getAllSubtypesOf(imi), context, imi); index.screenTitle = screenTitle; indexes.add(index); } return indexes; } public static Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final InputMethodManager imm = context.getSystemService(InputMethodManager.class); final List<InputMethodInfo> enabledInputMethods = imm.getEnabledInputMethodList(); final List<InputMethodInfo> disabledInputMethods = new ArrayList<>(); for (final InputMethodInfo imi : imm.getInputMethodList()) { if (!enabledInputMethods.contains(imi)) { disabledInputMethods.add(imi); } } final String screenTitle = context.getString( R.string.available_virtual_keyboard_category); return buildSearchIndexOfInputMethods(context, disabledInputMethods, screenTitle); } }; } src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +0 −36 Original line number Diff line number Diff line Loading @@ -17,16 +17,11 @@ package com.android.settings.inputmethod; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ServiceInfo; import android.hardware.input.InputDeviceIdentifier; import android.speech.tts.TtsEngines; import android.support.v7.preference.Preference; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; Loading Loading @@ -212,37 +207,6 @@ public class InputMethodAndLanguageSettings extends DashboardFragment indexable.keywords = context.getString(R.string.keywords_keyboard_and_ime); indexables.add(indexable); InputMethodSettingValuesWrapper immValues = InputMethodSettingValuesWrapper .getInstance(context); immValues.refreshAllInputMethodAndSubtypes(); InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService( Context.INPUT_METHOD_SERVICE); // TODO: Move to VirtualKeyboardFragment and AvailableVirtualKeyboardFragment. // All other IMEs. List<InputMethodInfo> inputMethods = immValues.getInputMethodList(); final int inputMethodCount = (inputMethods == null ? 0 : inputMethods.size()); for (int i = 0; i < inputMethodCount; ++i) { InputMethodInfo inputMethod = inputMethods.get(i); List<InputMethodSubtype> subtypes = inputMethodManager .getEnabledInputMethodSubtypeList(inputMethod, true); String summary = InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, context, inputMethod); ServiceInfo serviceInfo = inputMethod.getServiceInfo(); ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name); indexable = new SearchIndexableRaw(context); indexable.key = componentName.flattenToString(); indexable.title = inputMethod.loadLabel(context.getPackageManager()).toString(); indexable.summaryOn = summary; indexable.summaryOff = summary; indexable.screenTitle = screenTitle; indexables.add(indexable); } if (!PhysicalKeyboardFragment.getPhysicalFullKeyboards().isEmpty()) { // Hard keyboard category. indexable = new SearchIndexableRaw(context); Loading src/com/android/settings/inputmethod/VirtualKeyboardFragment.java +18 −1 Original line number Diff line number Diff line Loading @@ -26,10 +26,15 @@ import android.os.Bundle; import android.support.v7.preference.Preference; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import java.text.Collator; import java.util.ArrayList; Loading @@ -37,7 +42,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; public final class VirtualKeyboardFragment extends SettingsPreferenceFragment { public final class VirtualKeyboardFragment extends SettingsPreferenceFragment implements Indexable { private static final String ADD_VIRTUAL_KEYBOARD_SCREEN = "add_virtual_keyboard_screen"; private static final Drawable NO_ICON = new ColorDrawable(Color.TRANSPARENT); Loading Loading @@ -117,4 +122,16 @@ public final class VirtualKeyboardFragment extends SettingsPreferenceFragment { mAddVirtualKeyboardScreen.setOrder(N); getPreferenceScreen().addPreference(mAddVirtualKeyboardScreen); } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final InputMethodManager imm = context.getSystemService(InputMethodManager.class); final List<InputMethodInfo> enabledInputMethods = imm.getEnabledInputMethodList(); final String screenTitle = context.getString(R.string.virtual_keyboard_category); return AvailableVirtualKeyboardFragment .buildSearchIndexOfInputMethods(context, enabledInputMethods, screenTitle); } }; } src/com/android/settings/search/DynamicIndexableContentMonitor.java +10 −4 Original line number Diff line number Diff line Loading @@ -47,8 +47,10 @@ import android.view.inputmethod.InputMethodManager; import com.android.internal.content.PackageMonitor; import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.PhysicalKeyboardFragment; import com.android.settings.inputmethod.VirtualKeyboardFragment; import com.android.settings.print.PrintSettingsFragment; import java.util.ArrayList; Loading Loading @@ -418,7 +420,11 @@ public final class DynamicIndexableContentMonitor implements mPackageManager = context.getPackageManager(); mContentResolver = context.getContentResolver(); mInputMethodServices.clear(); // Build index of {@link UserDictionary}. buildIndex(InputMethodAndLanguageSettings.class, true /* rebuild */); // Build index of IMEs. buildIndex(VirtualKeyboardFragment.class, true /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */); // Cache IME service packages to know when they go away. final InputMethodManager inputMethodManager = (InputMethodManager) context Loading Loading @@ -451,15 +457,15 @@ public final class DynamicIndexableContentMonitor implements .queryIntentServices(intent, 0 /* flags */); if (services == null || services.isEmpty()) return; mInputMethodServices.add(packageName); // TODO: Fix landing page to VirtualKeyboardFragment. buildIndex(InputMethodAndLanguageSettings.class, false /* rebuild */); buildIndex(VirtualKeyboardFragment.class, false /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, false /* rebuild */); } synchronized void onPackageUnavailable(String packageName) { if (mIndex == null) return; if (!mInputMethodServices.remove(packageName)) return; // TODO: Fix landing page to AvailableVirtualKeyboardFragment. buildIndex(InputMethodAndLanguageSettings.class, true /* rebuild */); buildIndex(VirtualKeyboardFragment.class, true /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */); } @Override Loading src/com/android/settings/search/SearchIndexableResources.java +5 −0 Original line number Diff line number Diff line Loading @@ -54,8 +54,10 @@ import com.android.settings.gestures.DoubleTwistGestureSettings; import com.android.settings.gestures.GestureSettings; import com.android.settings.gestures.PickupGestureSettings; import com.android.settings.gestures.SwipeToNotificationSettings; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.PhysicalKeyboardFragment; import com.android.settings.inputmethod.VirtualKeyboardFragment; import com.android.settings.location.LocationSettings; import com.android.settings.location.ScanningSettings; import com.android.settings.network.NetworkDashboardFragment; Loading Loading @@ -142,6 +144,9 @@ public final class SearchIndexableResources { R.drawable.ic_settings_accounts); addIndex(InputMethodAndLanguageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(VirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(AvailableVirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(PhysicalKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(PrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup); addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time); Loading Loading
src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java +54 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; Loading @@ -33,9 +34,14 @@ import android.os.Bundle; import android.support.v7.preference.PreferenceScreen; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import java.text.Collator; import java.util.ArrayList; Loading @@ -44,7 +50,7 @@ import java.util.Comparator; import java.util.List; public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFragment implements InputMethodPreference.OnSavePreferenceListener { implements InputMethodPreference.OnSavePreferenceListener, Indexable { private final ArrayList<InputMethodPreference> mInputMethodPreferenceList = new ArrayList<>(); private InputMethodSettingValuesWrapper mInputMethodSettingValues; Loading Loading @@ -169,4 +175,51 @@ public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFr pref.updatePreferenceViews(); } } private static List<InputMethodSubtype> getAllSubtypesOf(final InputMethodInfo imi) { final int subtypeCount = imi.getSubtypeCount(); final List<InputMethodSubtype> allSubtypes = new ArrayList<>(subtypeCount); for (int index = 0; index < subtypeCount; index++) { allSubtypes.add(imi.getSubtypeAt(index)); } return allSubtypes; } static List<SearchIndexableRaw> buildSearchIndexOfInputMethods(final Context context, final List<InputMethodInfo> inputMethods, final String screenTitle) { final List<SearchIndexableRaw> indexes = new ArrayList<>(); final InputMethodManager imm = (InputMethodManager) context.getSystemService( Context.INPUT_METHOD_SERVICE); for (int i = 0; i < inputMethods.size(); i++) { final InputMethodInfo imi = inputMethods.get(i); final ServiceInfo serviceInfo = imi.getServiceInfo(); final SearchIndexableRaw index = new SearchIndexableRaw(context); index.key = new ComponentName(serviceInfo.packageName, serviceInfo.name) .flattenToString(); index.title = imi.loadLabel(context.getPackageManager()).toString(); index.summaryOn = index.summaryOff = InputMethodAndSubtypeUtil .getSubtypeLocaleNameListAsSentence(getAllSubtypesOf(imi), context, imi); index.screenTitle = screenTitle; indexes.add(index); } return indexes; } public static Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final InputMethodManager imm = context.getSystemService(InputMethodManager.class); final List<InputMethodInfo> enabledInputMethods = imm.getEnabledInputMethodList(); final List<InputMethodInfo> disabledInputMethods = new ArrayList<>(); for (final InputMethodInfo imi : imm.getInputMethodList()) { if (!enabledInputMethods.contains(imi)) { disabledInputMethods.add(imi); } } final String screenTitle = context.getString( R.string.available_virtual_keyboard_category); return buildSearchIndexOfInputMethods(context, disabledInputMethods, screenTitle); } }; }
src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +0 −36 Original line number Diff line number Diff line Loading @@ -17,16 +17,11 @@ package com.android.settings.inputmethod; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ServiceInfo; import android.hardware.input.InputDeviceIdentifier; import android.speech.tts.TtsEngines; import android.support.v7.preference.Preference; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; Loading Loading @@ -212,37 +207,6 @@ public class InputMethodAndLanguageSettings extends DashboardFragment indexable.keywords = context.getString(R.string.keywords_keyboard_and_ime); indexables.add(indexable); InputMethodSettingValuesWrapper immValues = InputMethodSettingValuesWrapper .getInstance(context); immValues.refreshAllInputMethodAndSubtypes(); InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService( Context.INPUT_METHOD_SERVICE); // TODO: Move to VirtualKeyboardFragment and AvailableVirtualKeyboardFragment. // All other IMEs. List<InputMethodInfo> inputMethods = immValues.getInputMethodList(); final int inputMethodCount = (inputMethods == null ? 0 : inputMethods.size()); for (int i = 0; i < inputMethodCount; ++i) { InputMethodInfo inputMethod = inputMethods.get(i); List<InputMethodSubtype> subtypes = inputMethodManager .getEnabledInputMethodSubtypeList(inputMethod, true); String summary = InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence( subtypes, context, inputMethod); ServiceInfo serviceInfo = inputMethod.getServiceInfo(); ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name); indexable = new SearchIndexableRaw(context); indexable.key = componentName.flattenToString(); indexable.title = inputMethod.loadLabel(context.getPackageManager()).toString(); indexable.summaryOn = summary; indexable.summaryOff = summary; indexable.screenTitle = screenTitle; indexables.add(indexable); } if (!PhysicalKeyboardFragment.getPhysicalFullKeyboards().isEmpty()) { // Hard keyboard category. indexable = new SearchIndexableRaw(context); Loading
src/com/android/settings/inputmethod/VirtualKeyboardFragment.java +18 −1 Original line number Diff line number Diff line Loading @@ -26,10 +26,15 @@ import android.os.Bundle; import android.support.v7.preference.Preference; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import java.text.Collator; import java.util.ArrayList; Loading @@ -37,7 +42,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; public final class VirtualKeyboardFragment extends SettingsPreferenceFragment { public final class VirtualKeyboardFragment extends SettingsPreferenceFragment implements Indexable { private static final String ADD_VIRTUAL_KEYBOARD_SCREEN = "add_virtual_keyboard_screen"; private static final Drawable NO_ICON = new ColorDrawable(Color.TRANSPARENT); Loading Loading @@ -117,4 +122,16 @@ public final class VirtualKeyboardFragment extends SettingsPreferenceFragment { mAddVirtualKeyboardScreen.setOrder(N); getPreferenceScreen().addPreference(mAddVirtualKeyboardScreen); } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final InputMethodManager imm = context.getSystemService(InputMethodManager.class); final List<InputMethodInfo> enabledInputMethods = imm.getEnabledInputMethodList(); final String screenTitle = context.getString(R.string.virtual_keyboard_category); return AvailableVirtualKeyboardFragment .buildSearchIndexOfInputMethods(context, enabledInputMethods, screenTitle); } }; }
src/com/android/settings/search/DynamicIndexableContentMonitor.java +10 −4 Original line number Diff line number Diff line Loading @@ -47,8 +47,10 @@ import android.view.inputmethod.InputMethodManager; import com.android.internal.content.PackageMonitor; import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.PhysicalKeyboardFragment; import com.android.settings.inputmethod.VirtualKeyboardFragment; import com.android.settings.print.PrintSettingsFragment; import java.util.ArrayList; Loading Loading @@ -418,7 +420,11 @@ public final class DynamicIndexableContentMonitor implements mPackageManager = context.getPackageManager(); mContentResolver = context.getContentResolver(); mInputMethodServices.clear(); // Build index of {@link UserDictionary}. buildIndex(InputMethodAndLanguageSettings.class, true /* rebuild */); // Build index of IMEs. buildIndex(VirtualKeyboardFragment.class, true /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */); // Cache IME service packages to know when they go away. final InputMethodManager inputMethodManager = (InputMethodManager) context Loading Loading @@ -451,15 +457,15 @@ public final class DynamicIndexableContentMonitor implements .queryIntentServices(intent, 0 /* flags */); if (services == null || services.isEmpty()) return; mInputMethodServices.add(packageName); // TODO: Fix landing page to VirtualKeyboardFragment. buildIndex(InputMethodAndLanguageSettings.class, false /* rebuild */); buildIndex(VirtualKeyboardFragment.class, false /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, false /* rebuild */); } synchronized void onPackageUnavailable(String packageName) { if (mIndex == null) return; if (!mInputMethodServices.remove(packageName)) return; // TODO: Fix landing page to AvailableVirtualKeyboardFragment. buildIndex(InputMethodAndLanguageSettings.class, true /* rebuild */); buildIndex(VirtualKeyboardFragment.class, true /* rebuild */); buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */); } @Override Loading
src/com/android/settings/search/SearchIndexableResources.java +5 −0 Original line number Diff line number Diff line Loading @@ -54,8 +54,10 @@ import com.android.settings.gestures.DoubleTwistGestureSettings; import com.android.settings.gestures.GestureSettings; import com.android.settings.gestures.PickupGestureSettings; import com.android.settings.gestures.SwipeToNotificationSettings; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.PhysicalKeyboardFragment; import com.android.settings.inputmethod.VirtualKeyboardFragment; import com.android.settings.location.LocationSettings; import com.android.settings.location.ScanningSettings; import com.android.settings.network.NetworkDashboardFragment; Loading Loading @@ -142,6 +144,9 @@ public final class SearchIndexableResources { R.drawable.ic_settings_accounts); addIndex(InputMethodAndLanguageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(VirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(AvailableVirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(PhysicalKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language); addIndex(PrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup); addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time); Loading