diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-03-10 19:24:54 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-03-12 11:34:59 -0700 |
commit | b8dfbf140986a9c0781f268ea40914063f026436 (patch) | |
tree | d95f2323502ee694ea9ec1d1481bc2b33d887e4d /src/com/android/settings/WallpaperTypeSettings.java | |
parent | 2f4556e31b5d69e508ab9431eef4fea5f8d89e4f (diff) | |
download | packages_apps_Settings-b8dfbf140986a9c0781f268ea40914063f026436.tar.gz packages_apps_Settings-b8dfbf140986a9c0781f268ea40914063f026436.tar.bz2 packages_apps_Settings-b8dfbf140986a9c0781f268ea40914063f026436.zip |
Add dynamic Preferences indexing
- introduce a new private interface "Indexable".
- refactor Wallpaper and Wi-Fi settings to support this new
interface.
- only index saved/remembered Wi-Fi networks
- also add the capability to remove some data from the Index.
Fragments that want to publish some dynamic indexable data should
implement the "Indexable" interface and provide a static final field
named "INDEX_DATA_PROVIDER" with is the Indexable.IndexDataProvider
interface for providing the data for indexing.
Thru this interface the Index can ask what are the data chuncks to
index.
Change-Id: I31e7212c87b8218efe1a8f3028147cb19e119be6
Diffstat (limited to 'src/com/android/settings/WallpaperTypeSettings.java')
-rw-r--r-- | src/com/android/settings/WallpaperTypeSettings.java | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/src/com/android/settings/WallpaperTypeSettings.java b/src/com/android/settings/WallpaperTypeSettings.java index fa5f0ac73..f46315a1d 100644 --- a/src/com/android/settings/WallpaperTypeSettings.java +++ b/src/com/android/settings/WallpaperTypeSettings.java @@ -16,18 +16,23 @@ package com.android.settings; -import android.app.Activity; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceScreen; +import com.android.settings.indexer.Indexable; +import com.android.settings.indexer.IndexableData; +import com.android.settings.indexer.IndexableRef; +import java.util.ArrayList; import java.util.List; -public class WallpaperTypeSettings extends SettingsPreferenceFragment { +public class WallpaperTypeSettings extends SettingsPreferenceFragment implements Indexable { + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -38,9 +43,9 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment { private void populateWallpaperTypes() { // Search for activities that satisfy the ACTION_SET_WALLPAPER action - Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); + final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); final PackageManager pm = getPackageManager(); - List<ResolveInfo> rList = pm.queryIntentActivities(intent, + final List<ResolveInfo> rList = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); final PreferenceScreen parent = getPreferenceScreen(); @@ -58,4 +63,42 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment { parent.addPreference(pref); } } + + public static final IndexDataProvider INDEX_DATA_PROVIDER = + new IndexDataProvider() { + @Override + public List<IndexableRef> getRefsToIndex(Context context) { + return null; + } + + @Override + public List<IndexableData> getRawDataToIndex(Context context) { + final List<IndexableData> result = new ArrayList<IndexableData>(); + + final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); + final PackageManager pm = context.getPackageManager(); + final List<ResolveInfo> rList = pm.queryIntentActivities(intent, + PackageManager.MATCH_DEFAULT_ONLY); + + // Add indexable data for each of the matching activities + for (ResolveInfo info : rList) { + Intent prefIntent = new Intent(intent); + prefIntent.setComponent(new ComponentName( + info.activityInfo.packageName, info.activityInfo.name)); + CharSequence label = info.loadLabel(pm); + if (label == null) label = info.activityInfo.packageName; + + IndexableData data = new IndexableData(); + data.title = label.toString(); + data.fragmentTitle = context.getResources().getString( + R.string.wallpaper_settings_fragment_title); + data.intentAction = intent.getAction(); + data.intentTargetPackage = info.activityInfo.packageName; + data.intentTargetClass = info.activityInfo.name; + result.add(data); + } + + return result; + } + }; } |