diff options
author | Bjorn Bringert <bringert@google.com> | 2013-10-03 23:22:56 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-10-03 23:22:57 +0000 |
commit | ed60ba1e24512bef0bb2b749b6297e8c7e5330cf (patch) | |
tree | 089e54d756f1672e29a7e92fca51133e7b8caa5d /src/com/android/launcher3 | |
parent | f2e1ace17541a4f373a04dd0db9292b23c08a9fd (diff) | |
parent | 1307f63f8a93541bf6e2d29c11fab69778a25e42 (diff) | |
download | android_packages_apps_Trebuchet-ed60ba1e24512bef0bb2b749b6297e8c7e5330cf.tar.gz android_packages_apps_Trebuchet-ed60ba1e24512bef0bb2b749b6297e8c7e5330cf.tar.bz2 android_packages_apps_Trebuchet-ed60ba1e24512bef0bb2b749b6297e8c7e5330cf.zip |
Merge "Add a better app filtering mechanism and filter widgets" into jb-ub-now-indigo-rose
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r-- | src/com/android/launcher3/AllAppsList.java | 10 | ||||
-rw-r--r-- | src/com/android/launcher3/AppFilter.java | 35 | ||||
-rw-r--r-- | src/com/android/launcher3/AppsCustomizePagedView.java | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherAppState.java | 9 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 13 |
6 files changed, 59 insertions, 16 deletions
diff --git a/src/com/android/launcher3/AllAppsList.java b/src/com/android/launcher3/AllAppsList.java index 5d3aa3ab7..d955e4eae 100644 --- a/src/com/android/launcher3/AllAppsList.java +++ b/src/com/android/launcher3/AllAppsList.java @@ -46,11 +46,14 @@ class AllAppsList { private IconCache mIconCache; + private AppFilter mAppFilter; + /** * Boring constructor. */ - public AllAppsList(IconCache iconCache) { + public AllAppsList(IconCache iconCache, AppFilter appFilter) { mIconCache = iconCache; + mAppFilter = appFilter; } /** @@ -60,13 +63,16 @@ class AllAppsList { * If the app is already in the list, doesn't add it. */ public void add(AppInfo info) { + if (mAppFilter != null && !mAppFilter.shouldShowApp(info.componentName)) { + return; + } if (findActivity(data, info.componentName)) { return; } data.add(info); added.add(info); } - + public void clear() { data.clear(); // TODO: do we clear these too? diff --git a/src/com/android/launcher3/AppFilter.java b/src/com/android/launcher3/AppFilter.java new file mode 100644 index 000000000..e01436d7a --- /dev/null +++ b/src/com/android/launcher3/AppFilter.java @@ -0,0 +1,35 @@ +package com.android.launcher3; + +import android.content.ComponentName; +import android.text.TextUtils; +import android.util.Log; + +public abstract class AppFilter { + + private static final boolean DBG = false; + private static final String TAG = "AppFilter"; + + public abstract boolean shouldShowApp(ComponentName app); + + public static AppFilter loadByName(String className) { + if (TextUtils.isEmpty(className)) return null; + if (DBG) Log.d(TAG, "Loading AppFilter: " + className); + try { + Class<?> cls = Class.forName(className); + return (AppFilter) cls.newInstance(); + } catch (ClassNotFoundException e) { + Log.e(TAG, "Bad AppFilter class", e); + return null; + } catch (InstantiationException e) { + Log.e(TAG, "Bad AppFilter class", e); + return null; + } catch (IllegalAccessException e) { + Log.e(TAG, "Bad AppFilter class", e); + return null; + } catch (ClassCastException e) { + Log.e(TAG, "Bad AppFilter class", e); + return null; + } + } + +} diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java index 4e9d68b50..9b35bb5ea 100644 --- a/src/com/android/launcher3/AppsCustomizePagedView.java +++ b/src/com/android/launcher3/AppsCustomizePagedView.java @@ -438,6 +438,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen for (Object o : widgetsAndShortcuts) { if (o instanceof AppWidgetProviderInfo) { AppWidgetProviderInfo widget = (AppWidgetProviderInfo) o; + if (!app.shouldShowAppOrWidgetProvider(widget.provider)) { + continue; + } widget.label = widget.label.trim(); if (widget.minWidth > 0 && widget.minHeight > 0) { // Ensure that all widgets we show can be added on a workspace of this size diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 681ed24a0..f3a02b3c2 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -3937,11 +3937,6 @@ public class Launcher extends Activity } } - @Override - public boolean shouldShowApp(ResolveInfo app) { - return true; - } - /** * A package was updated. * diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java index ed96310ac..7da1c2af7 100644 --- a/src/com/android/launcher3/LauncherAppState.java +++ b/src/com/android/launcher3/LauncherAppState.java @@ -34,6 +34,7 @@ public class LauncherAppState { private LauncherModel mModel; private IconCache mIconCache; + private AppFilter mAppFilter; private WidgetPreviewLoader.CacheDb mWidgetPreviewCacheDb; private boolean mIsScreenLarge; private float mScreenDensity; @@ -81,7 +82,9 @@ public class LauncherAppState { mWidgetPreviewCacheDb = new WidgetPreviewLoader.CacheDb(sContext); mIconCache = new IconCache(sContext); - mModel = new LauncherModel(this, mIconCache); + + mAppFilter = AppFilter.loadByName(sContext.getString(R.string.app_filter_class)); + mModel = new LauncherModel(this, mIconCache, mAppFilter); // Register intent receivers IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); @@ -147,6 +150,10 @@ public class LauncherAppState { return mModel; } + boolean shouldShowAppOrWidgetProvider(ComponentName componentName) { + return mAppFilter == null || mAppFilter.shouldShowApp(componentName); + } + WidgetPreviewLoader.CacheDb getWidgetPreviewCacheDb() { return mWidgetPreviewCacheDb; } diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index cc89d01ac..edfc07059 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -158,7 +158,6 @@ public class LauncherModel extends BroadcastReceiver { public void bindFolders(HashMap<Long,FolderInfo> folders); public void finishBindingItems(boolean upgradePath); public void bindAppWidget(LauncherAppWidgetInfo info); - public boolean shouldShowApp(ResolveInfo app); public void bindAllApplications(ArrayList<AppInfo> apps); public void bindAppsAdded(ArrayList<Long> newScreens, ArrayList<ItemInfo> addNotAnimated, @@ -179,12 +178,12 @@ public class LauncherModel extends BroadcastReceiver { public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn); } - LauncherModel(LauncherAppState app, IconCache iconCache) { + LauncherModel(LauncherAppState app, IconCache iconCache, AppFilter appFilter) { final Context context = app.getContext(); mAppsCanBeOnRemoveableStorage = Environment.isExternalStorageRemovable(); mApp = app; - mBgAllAppsList = new AllAppsList(iconCache); + mBgAllAppsList = new AllAppsList(iconCache, appFilter); mIconCache = iconCache; mDefaultIcon = Utilities.createIconBitmap( @@ -2397,11 +2396,9 @@ public class LauncherModel extends BroadcastReceiver { // Create the ApplicationInfos for (int i = 0; i < apps.size(); i++) { ResolveInfo app = apps.get(i); - if (oldCallbacks.shouldShowApp(app)) { - // This builds the icon bitmaps. - mBgAllAppsList.add(new AppInfo(packageManager, app, - mIconCache, mLabelCache)); - } + // This builds the icon bitmaps. + mBgAllAppsList.add(new AppInfo(packageManager, app, + mIconCache, mLabelCache)); } // Huh? Shouldn't this be inside the Runnable below? |