Loading src/com/cyanogenmod/trebuchet/LauncherModel.java +77 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import android.os.RemoteException; import android.os.SystemClock; import android.util.Log; import com.cyanogenmod.trebuchet.preference.PreferencesProvider; import java.lang.ref.WeakReference; import java.net.URISyntaxException; import java.text.Collator; Loading Loading @@ -1647,6 +1649,79 @@ public class LauncherModel extends BroadcastReceiver { }); } private void removeHiddenAppsWorkspaceItems( final ArrayList<ItemInfo> workspaceItems, final ArrayList<LauncherAppWidgetInfo> appWidgets, final HashMap<Long, FolderInfo> folders) { // Get hidden apps ArrayList<ComponentName> mHiddenApps = new ArrayList<ComponentName>(); ArrayList<String> mHiddenAppsPackages = new ArrayList<String>(); String[] flattened = PreferencesProvider.Interface.Drawer.getHiddenApps().split("\\|"); for (String flat : flattened) { ComponentName cmp = ComponentName.unflattenFromString(flat); if (cmp != null) { mHiddenApps.add(cmp); mHiddenAppsPackages.add(cmp.getPackageName()); } } // Shortcuts int N = workspaceItems.size() - 1; for (int i = N; i >= 0; i--) { final ItemInfo item = workspaceItems.get(i); if (item instanceof ShortcutInfo) { ShortcutInfo shortcut = (ShortcutInfo)item; if (shortcut.intent != null && shortcut.intent.getComponent() != null) { if (mHiddenApps.contains(shortcut.intent.getComponent())) { LauncherModel.deleteItemFromDatabase(mContext, shortcut); workspaceItems.remove(i); } } } else { final FolderInfo folder = (FolderInfo)item; List<ShortcutInfo> shortcuts = folder.contents; int NN = shortcuts.size() - 1; for (int j = NN; j >= 0; j--) { ShortcutInfo sci = shortcuts.get(j); if (sci.intent != null && sci.intent.getComponent() != null) { if (mHiddenApps.contains(sci.intent.getComponent())) { LauncherModel.deleteItemFromDatabase(mContext, sci); folder.remove(sci); } } } if (folder.contents.size() == 1) { ShortcutInfo finalItem = folder.contents.get(0); finalItem.container = folder.container; LauncherModel.deleteItemFromDatabase(mContext, folder); LauncherModel.addOrMoveItemInDatabase(mContext, finalItem, folder.container, folder.screen, folder.cellX, folder.cellY); workspaceItems.remove(i); workspaceItems.add(finalItem); folders.remove(Long.valueOf(item.id)); } else if (folder.contents.size() == 0) { LauncherModel.deleteFolderContentsFromDatabase(mContext, folder); workspaceItems.remove(i); folders.remove(Long.valueOf(item.id)); } } } // AppWidgets N = appWidgets.size() - 1; for (int i = N; i >= 0; i--) { final LauncherAppWidgetInfo item = appWidgets.get(i); if (item.providerName != null) { if (mHiddenAppsPackages.contains(item.providerName.getPackageName())) { LauncherModel.deleteItemFromDatabase(mContext, item); appWidgets.remove(i); } } } } private void bindWorkspaceItems(final Callbacks oldCallbacks, final ArrayList<ItemInfo> workspaceItems, final ArrayList<LauncherAppWidgetInfo> appWidgets, Loading @@ -1655,6 +1730,8 @@ public class LauncherModel extends BroadcastReceiver { final boolean postOnMainThread = (deferredBindRunnables != null); removeHiddenAppsWorkspaceItems(workspaceItems, appWidgets, folders); // Bind the workspace items int N = workspaceItems.size(); for (int i = 0; i < N; i += ITEMS_CHUNK) { Loading Loading
src/com/cyanogenmod/trebuchet/LauncherModel.java +77 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import android.os.RemoteException; import android.os.SystemClock; import android.util.Log; import com.cyanogenmod.trebuchet.preference.PreferencesProvider; import java.lang.ref.WeakReference; import java.net.URISyntaxException; import java.text.Collator; Loading Loading @@ -1647,6 +1649,79 @@ public class LauncherModel extends BroadcastReceiver { }); } private void removeHiddenAppsWorkspaceItems( final ArrayList<ItemInfo> workspaceItems, final ArrayList<LauncherAppWidgetInfo> appWidgets, final HashMap<Long, FolderInfo> folders) { // Get hidden apps ArrayList<ComponentName> mHiddenApps = new ArrayList<ComponentName>(); ArrayList<String> mHiddenAppsPackages = new ArrayList<String>(); String[] flattened = PreferencesProvider.Interface.Drawer.getHiddenApps().split("\\|"); for (String flat : flattened) { ComponentName cmp = ComponentName.unflattenFromString(flat); if (cmp != null) { mHiddenApps.add(cmp); mHiddenAppsPackages.add(cmp.getPackageName()); } } // Shortcuts int N = workspaceItems.size() - 1; for (int i = N; i >= 0; i--) { final ItemInfo item = workspaceItems.get(i); if (item instanceof ShortcutInfo) { ShortcutInfo shortcut = (ShortcutInfo)item; if (shortcut.intent != null && shortcut.intent.getComponent() != null) { if (mHiddenApps.contains(shortcut.intent.getComponent())) { LauncherModel.deleteItemFromDatabase(mContext, shortcut); workspaceItems.remove(i); } } } else { final FolderInfo folder = (FolderInfo)item; List<ShortcutInfo> shortcuts = folder.contents; int NN = shortcuts.size() - 1; for (int j = NN; j >= 0; j--) { ShortcutInfo sci = shortcuts.get(j); if (sci.intent != null && sci.intent.getComponent() != null) { if (mHiddenApps.contains(sci.intent.getComponent())) { LauncherModel.deleteItemFromDatabase(mContext, sci); folder.remove(sci); } } } if (folder.contents.size() == 1) { ShortcutInfo finalItem = folder.contents.get(0); finalItem.container = folder.container; LauncherModel.deleteItemFromDatabase(mContext, folder); LauncherModel.addOrMoveItemInDatabase(mContext, finalItem, folder.container, folder.screen, folder.cellX, folder.cellY); workspaceItems.remove(i); workspaceItems.add(finalItem); folders.remove(Long.valueOf(item.id)); } else if (folder.contents.size() == 0) { LauncherModel.deleteFolderContentsFromDatabase(mContext, folder); workspaceItems.remove(i); folders.remove(Long.valueOf(item.id)); } } } // AppWidgets N = appWidgets.size() - 1; for (int i = N; i >= 0; i--) { final LauncherAppWidgetInfo item = appWidgets.get(i); if (item.providerName != null) { if (mHiddenAppsPackages.contains(item.providerName.getPackageName())) { LauncherModel.deleteItemFromDatabase(mContext, item); appWidgets.remove(i); } } } } private void bindWorkspaceItems(final Callbacks oldCallbacks, final ArrayList<ItemInfo> workspaceItems, final ArrayList<LauncherAppWidgetInfo> appWidgets, Loading @@ -1655,6 +1730,8 @@ public class LauncherModel extends BroadcastReceiver { final boolean postOnMainThread = (deferredBindRunnables != null); removeHiddenAppsWorkspaceItems(workspaceItems, appWidgets, folders); // Bind the workspace items int N = workspaceItems.size(); for (int i = 0; i < N; i += ITEMS_CHUNK) { Loading