summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/WallpaperTypeSettings.java
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-03-10 19:24:54 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-03-12 11:34:59 -0700
commitb8dfbf140986a9c0781f268ea40914063f026436 (patch)
treed95f2323502ee694ea9ec1d1481bc2b33d887e4d /src/com/android/settings/WallpaperTypeSettings.java
parent2f4556e31b5d69e508ab9431eef4fea5f8d89e4f (diff)
downloadpackages_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.java51
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;
+ }
+ };
}