am a9286147: Merge "Adding ability to filter for certain types of widgets in picker activity" into jb-mr1-dev

* commit 'a92861471d41a6cfae0c7e6825d02398fdbd0b42':
  Adding ability to filter for certain types of widgets in picker activity
This commit is contained in:
Michael Jurka
2012-09-14 12:21:49 -07:00
committed by Android Git Automerger

View File

@@ -74,7 +74,7 @@ public class AppWidgetPickActivity extends ActivityPicker {
finish(); finish();
} }
} }
/** /**
* Create list entries for any custom widgets requested through * Create list entries for any custom widgets requested through
* {@link AppWidgetManager#EXTRA_CUSTOM_INFO}. * {@link AppWidgetManager#EXTRA_CUSTOM_INFO}.
@@ -129,7 +129,12 @@ public class AppWidgetPickActivity extends ActivityPicker {
} }
if (LOGD) Log.d(TAG, "Using " + customInfo.size() + " custom items"); 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. * inserting extras if provided.
*/ */
void putAppWidgetItems(List<AppWidgetProviderInfo> appWidgets, 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; if (appWidgets == null) return;
final int size = appWidgets.size(); final int size = appWidgets.size();
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
AppWidgetProviderInfo info = appWidgets.get(i); AppWidgetProviderInfo info = appWidgets.get(i);
CharSequence label = info.label; CharSequence label = info.label;
Drawable icon = null; Drawable icon = null;
@@ -184,18 +190,28 @@ public class AppWidgetPickActivity extends ActivityPicker {
} }
PickAdapter.Item item = new PickAdapter.Item(this, label, icon); PickAdapter.Item item = new PickAdapter.Item(this, label, icon);
item.packageName = info.provider.getPackageName(); item.packageName = info.provider.getPackageName();
item.className = info.provider.getClassName(); item.className = info.provider.getClassName();
if (customExtras != null) { if (customExtras != null) {
item.extras = customExtras.get(i); 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); items.add(item);
} }
} }
/** /**
* Build and return list of items to be shown in dialog. This will mix both * Build and return list of items to be shown in dialog. This will mix both
* installed {@link AppWidgetProviderInfo} and those provided through * installed {@link AppWidgetProviderInfo} and those provided through
@@ -204,8 +220,20 @@ public class AppWidgetPickActivity extends ActivityPicker {
@Override @Override
protected List<PickAdapter.Item> getItems() { protected List<PickAdapter.Item> getItems() {
List<PickAdapter.Item> items = new ArrayList<PickAdapter.Item>(); 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); putCustomAppWidgets(items);
// Sort all items together by label // Sort all items together by label
@@ -222,9 +250,9 @@ public class AppWidgetPickActivity extends ActivityPicker {
/** /**
* Create list entries for installed {@link AppWidgetProviderInfo} widgets. * 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(); List<AppWidgetProviderInfo> installed = mAppWidgetManager.getInstalledProviders();
putAppWidgetItems(installed, null, items); putAppWidgetItems(installed, null, items, categoryFilter, featuresFilter);
} }
/** /**