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:
@@ -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,7 +171,8 @@ 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++) {
|
||||||
@@ -192,6 +198,16 @@ public class AppWidgetPickActivity extends ActivityPicker {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,7 +221,19 @@ public class AppWidgetPickActivity extends ActivityPicker {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user