summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/AppWidgetPickActivity.java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2012-09-11 18:41:01 -0700
committerAdam Cohen <adamcohen@google.com>2012-09-11 18:41:01 -0700
commit8291c08c952b05f11efb22aa4079892cdb408daa (patch)
treea806d12061eefd29d73c110da8007284b6c2729b /src/com/android/settings/AppWidgetPickActivity.java
parent6be075d6c3de7a9fd28942e9e15f4790d0e73ca3 (diff)
downloadpackages_apps_Settings-8291c08c952b05f11efb22aa4079892cdb408daa.zip
packages_apps_Settings-8291c08c952b05f11efb22aa4079892cdb408daa.tar.gz
packages_apps_Settings-8291c08c952b05f11efb22aa4079892cdb408daa.tar.bz2
Adding ability to filter for certain types of widgets in picker activity
Change-Id: I92d8748b62ef017b6cd36ff377958c09c9f097c9
Diffstat (limited to 'src/com/android/settings/AppWidgetPickActivity.java')
-rw-r--r--src/com/android/settings/AppWidgetPickActivity.java50
1 files changed, 39 insertions, 11 deletions
diff --git a/src/com/android/settings/AppWidgetPickActivity.java b/src/com/android/settings/AppWidgetPickActivity.java
index 176ac80..019699b 100644
--- a/src/com/android/settings/AppWidgetPickActivity.java
+++ b/src/com/android/settings/AppWidgetPickActivity.java
@@ -74,7 +74,7 @@ public class AppWidgetPickActivity extends ActivityPicker {
finish();
}
}
-
+
/**
* Create list entries for any custom widgets requested through
* {@link AppWidgetManager#EXTRA_CUSTOM_INFO}.
@@ -129,7 +129,12 @@ public class AppWidgetPickActivity extends ActivityPicker {
}
if (LOGD) Log.d(TAG, "Using " + customInfo.size() + " custom items");
- putAppWidgetItems(customInfo, customExtras, items);
+ // We don't filter out any widgets.
+ int categoryFilter = AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN |
+ AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD;
+ // We don't require any features.
+ int featuresFilter = AppWidgetProviderInfo.WIDGET_FEATURES_NONE;
+ putAppWidgetItems(customInfo, customExtras, items, categoryFilter, featuresFilter);
}
/**
@@ -166,12 +171,13 @@ public class AppWidgetPickActivity extends ActivityPicker {
* inserting extras if provided.
*/
void putAppWidgetItems(List<AppWidgetProviderInfo> appWidgets,
- List<Bundle> customExtras, List<PickAdapter.Item> items) {
+ List<Bundle> customExtras, List<PickAdapter.Item> items, int categoryFilter,
+ int featuresFilter) {
if (appWidgets == null) return;
final int size = appWidgets.size();
for (int i = 0; i < size; i++) {
AppWidgetProviderInfo info = appWidgets.get(i);
-
+
CharSequence label = info.label;
Drawable icon = null;
@@ -184,18 +190,28 @@ public class AppWidgetPickActivity extends ActivityPicker {
}
PickAdapter.Item item = new PickAdapter.Item(this, label, icon);
-
+
item.packageName = info.provider.getPackageName();
item.className = info.provider.getClassName();
if (customExtras != null) {
item.extras = customExtras.get(i);
}
-
+
+ // We remove any widgets whose category isn't included in the filter
+ if ((info.widgetCategory & categoryFilter) == 0) {
+ continue;
+ }
+
+ // We remove any widgets who don't have all the features in the features filter
+ if ((info.widgetFeatures & featuresFilter) != featuresFilter) {
+ continue;
+ }
+
items.add(item);
}
}
-
+
/**
* Build and return list of items to be shown in dialog. This will mix both
* installed {@link AppWidgetProviderInfo} and those provided through
@@ -204,8 +220,20 @@ public class AppWidgetPickActivity extends ActivityPicker {
@Override
protected List<PickAdapter.Item> getItems() {
List<PickAdapter.Item> items = new ArrayList<PickAdapter.Item>();
-
- putInstalledAppWidgets(items);
+
+ final Intent intent = getIntent();
+ int categoryFilter = AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN;
+ if (intent.getExtras().containsKey(AppWidgetManager.EXTRA_CATEGORY_FILTER)) {
+ categoryFilter = intent.getExtras().getInt(AppWidgetManager.EXTRA_CATEGORY_FILTER);
+ }
+
+ // If not specified, we don't filter on any specific
+ int featuresFilter = AppWidgetProviderInfo.WIDGET_FEATURES_NONE;
+ if (intent.getExtras().containsKey(AppWidgetManager.EXTRA_FEATURES_FILTER)) {
+ featuresFilter = intent.getExtras().getInt(AppWidgetManager.EXTRA_CATEGORY_FILTER);
+ }
+
+ putInstalledAppWidgets(items, categoryFilter, featuresFilter);
putCustomAppWidgets(items);
// Sort all items together by label
@@ -222,9 +250,9 @@ public class AppWidgetPickActivity extends ActivityPicker {
/**
* Create list entries for installed {@link AppWidgetProviderInfo} widgets.
*/
- void putInstalledAppWidgets(List<PickAdapter.Item> items) {
+ void putInstalledAppWidgets(List<PickAdapter.Item> items, int categoryFilter, int featuresFilter) {
List<AppWidgetProviderInfo> installed = mAppWidgetManager.getInstalledProviders();
- putAppWidgetItems(installed, null, items);
+ putAppWidgetItems(installed, null, items, categoryFilter, featuresFilter);
}
/**