11307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringertpackage com.android.launcher3;
21307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
31307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringertimport android.content.ComponentName;
41307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringertimport android.text.TextUtils;
51307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringertimport android.util.Log;
61307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
71307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringertpublic abstract class AppFilter {
81307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
91307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert    private static final boolean DBG = false;
101307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert    private static final String TAG = "AppFilter";
111307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
121307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert    public abstract boolean shouldShowApp(ComponentName app);
131307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
141307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert    public static AppFilter loadByName(String className) {
151307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        if (TextUtils.isEmpty(className)) return null;
161307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        if (DBG) Log.d(TAG, "Loading AppFilter: " + className);
171307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        try {
181307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            Class<?> cls = Class.forName(className);
191307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            return (AppFilter) cls.newInstance();
201307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        } catch (ClassNotFoundException e) {
211307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            Log.e(TAG, "Bad AppFilter class", e);
221307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            return null;
231307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        } catch (InstantiationException e) {
241307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            Log.e(TAG, "Bad AppFilter class", e);
251307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            return null;
261307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        } catch (IllegalAccessException e) {
271307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            Log.e(TAG, "Bad AppFilter class", e);
281307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            return null;
291307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        } catch (ClassCastException e) {
301307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            Log.e(TAG, "Bad AppFilter class", e);
311307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert            return null;
321307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert        }
331307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert    }
341307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert
351307f63f8a93541bf6e2d29c11fab69778a25e42Bjorn Bringert}
36