List of usage examples for android.view ViewGroup getChildCount
public int getChildCount()
From source file:com.android.launcher2.Workspace.java
void removeItems(final ArrayList<String> packages) { final HashSet<String> packageNames = new HashSet<String>(); packageNames.addAll(packages);//from ww w. ja v a2 s.c o m ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); // Avoid ANRs by treating each screen separately post(new Runnable() { public void run() { final ArrayList<View> childrenToRemove = new ArrayList<View>(); childrenToRemove.clear(); int childCount = layout.getChildCount(); for (int j = 0; j < childCount; j++) { final View view = layout.getChildAt(j); Object tag = view.getTag(); if (tag instanceof ShortcutInfo) { final ShortcutInfo info = (ShortcutInfo) tag; final Intent intent = info.intent; final ComponentName name = intent.getComponent(); if (name != null) { if (packageNames.contains(name.getPackageName())) { LauncherModel.deleteItemFromDatabase(mLauncher, info); childrenToRemove.add(view); } } } else if (tag instanceof FolderInfo) { final FolderInfo info = (FolderInfo) tag; final ArrayList<ShortcutInfo> contents = info.contents; final int contentsCount = contents.size(); final ArrayList<ShortcutInfo> appsToRemoveFromFolder = new ArrayList<ShortcutInfo>(); for (int k = 0; k < contentsCount; k++) { final ShortcutInfo appInfo = contents.get(k); final Intent intent = appInfo.intent; final ComponentName name = intent.getComponent(); if (name != null) { if (packageNames.contains(name.getPackageName())) { appsToRemoveFromFolder.add(appInfo); } } } for (ShortcutInfo item : appsToRemoveFromFolder) { info.remove(item); LauncherModel.deleteItemFromDatabase(mLauncher, item); } } else if (tag instanceof LauncherAppWidgetInfo) { final LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) tag; final ComponentName provider = info.providerName; if (provider != null) { if (packageNames.contains(provider.getPackageName())) { LauncherModel.deleteItemFromDatabase(mLauncher, info); childrenToRemove.add(view); } } } } childCount = childrenToRemove.size(); for (int j = 0; j < childCount; j++) { View child = childrenToRemove.get(j); // Note: We can not remove the view directly from CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (childCount > 0) { layout.requestLayout(); layout.invalidate(); } } }); } // Clean up new-apps animation list final Context context = getContext(); post(new Runnable() { @Override public void run() { String spKey = LauncherApplication.getSharedPreferencesKey(); SharedPreferences sp = context.getSharedPreferences(spKey, Context.MODE_PRIVATE); Set<String> newApps = sp.getStringSet(InstallShortcutReceiver.NEW_APPS_LIST_KEY, null); // Remove all queued items that match the same package if (newApps != null) { synchronized (newApps) { Iterator<String> iter = newApps.iterator(); while (iter.hasNext()) { try { Intent intent = Intent.parseUri(iter.next(), 0); String pn = ItemInfo.getPackageName(intent); if (packageNames.contains(pn)) { iter.remove(); } // It is possible that we've queued an item to be loaded, yet it has // not been added to the workspace, so remove those items as well. ArrayList<ItemInfo> shortcuts; shortcuts = LauncherModel.getWorkspaceShortcutItemInfosWithIntent(intent); for (ItemInfo info : shortcuts) { LauncherModel.deleteItemFromDatabase(context, info); } } catch (URISyntaxException e) { } } } } } }); }
From source file:cc.flydev.launcher.Workspace.java
void removeItemsByPackageName(final ArrayList<String> packages) { final HashSet<String> packageNames = new HashSet<String>(); packageNames.addAll(packages);/*from w w w . j a va 2 s. c o m*/ // Filter out all the ItemInfos that this is going to affect final HashSet<ItemInfo> infos = new HashSet<ItemInfo>(); final HashSet<ComponentName> cns = new HashSet<ComponentName>(); ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (CellLayout layoutParent : cellLayouts) { ViewGroup layout = layoutParent.getShortcutsAndWidgets(); int childCount = layout.getChildCount(); for (int i = 0; i < childCount; ++i) { View view = layout.getChildAt(i); infos.add((ItemInfo) view.getTag()); } } LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn) { if (packageNames.contains(cn.getPackageName())) { cns.add(cn); return true; } return false; } }; LauncherModel.filterItemInfos(infos, filter); // Remove the affected components removeItemsByComponentName(cns); }
From source file:cc.flydev.launcher.Workspace.java
void removeItemsByComponentName(final HashSet<ComponentName> componentNames) { ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); final HashMap<ItemInfo, View> children = new HashMap<ItemInfo, View>(); for (int j = 0; j < layout.getChildCount(); j++) { final View view = layout.getChildAt(j); children.put((ItemInfo) view.getTag(), view); }//from www . j ava2s . com final ArrayList<View> childrenToRemove = new ArrayList<View>(); final HashMap<FolderInfo, ArrayList<ShortcutInfo>> folderAppsToRemove = new HashMap<FolderInfo, ArrayList<ShortcutInfo>>(); LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn) { if (parent instanceof FolderInfo) { if (componentNames.contains(cn)) { FolderInfo folder = (FolderInfo) parent; ArrayList<ShortcutInfo> appsToRemove; if (folderAppsToRemove.containsKey(folder)) { appsToRemove = folderAppsToRemove.get(folder); } else { appsToRemove = new ArrayList<ShortcutInfo>(); folderAppsToRemove.put(folder, appsToRemove); } appsToRemove.add((ShortcutInfo) info); return true; } } else { if (componentNames.contains(cn)) { childrenToRemove.add(children.get(info)); return true; } } return false; } }; LauncherModel.filterItemInfos(children.keySet(), filter); // Remove all the apps from their folders for (FolderInfo folder : folderAppsToRemove.keySet()) { ArrayList<ShortcutInfo> appsToRemove = folderAppsToRemove.get(folder); for (ShortcutInfo info : appsToRemove) { folder.remove(info); } } // Remove all the other children for (View child : childrenToRemove) { // Note: We can not remove the view directly from CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (childrenToRemove.size() > 0) { layout.requestLayout(); layout.invalidate(); } } // Strip all the empty screens stripEmptyScreens(); }
From source file:com.aidy.launcher3.ui.workspace.Workspace.java
public void removeItemsByPackageName(final ArrayList<String> packages) { final HashSet<String> packageNames = new HashSet<String>(); packageNames.addAll(packages);// www . j a v a 2s .c o m // Filter out all the ItemInfos that this is going to affect final HashSet<ItemInfoBean> infos = new HashSet<ItemInfoBean>(); final HashSet<ComponentName> cns = new HashSet<ComponentName>(); ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (CellLayout layoutParent : cellLayouts) { ViewGroup layout = layoutParent.getShortcutsAndWidgets(); int childCount = layout.getChildCount(); for (int i = 0; i < childCount; ++i) { View view = layout.getChildAt(i); infos.add((ItemInfoBean) view.getTag()); } } LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfoBean parent, ItemInfoBean info, ComponentName cn) { if (packageNames.contains(cn.getPackageName())) { cns.add(cn); return true; } return false; } }; LauncherModel.filterItemInfos(infos, filter); // Remove the affected components removeItemsByComponentName(cns); }
From source file:com.example.launcher3.Workspace.java
void removeItemsByComponentName(final HashSet<ComponentName> componentNames) { ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); final HashMap<ItemInfo, View> children = new HashMap<ItemInfo, View>(); for (int j = 0; j < layout.getChildCount(); j++) { final View view = layout.getChildAt(j); children.put((ItemInfo) view.getTag(), view); }//from w ww . j av a2 s . c o m final ArrayList<View> childrenToRemove = new ArrayList<View>(); final HashMap<FolderInfo, ArrayList<ShortcutInfo>> folderAppsToRemove = new HashMap<FolderInfo, ArrayList<ShortcutInfo>>(); LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn) { if (parent instanceof FolderInfo) { if (componentNames.contains(cn)) { FolderInfo folder = (FolderInfo) parent; ArrayList<ShortcutInfo> appsToRemove; if (folderAppsToRemove.containsKey(folder)) { appsToRemove = folderAppsToRemove.get(folder); } else { appsToRemove = new ArrayList<ShortcutInfo>(); folderAppsToRemove.put(folder, appsToRemove); } appsToRemove.add((ShortcutInfo) info); return true; } } else { if (componentNames.contains(cn)) { childrenToRemove.add(children.get(info)); return true; } } return false; } }; LauncherModel.filterItemInfos(children.keySet(), filter); // Remove all the apps from their folders for (FolderInfo folder : folderAppsToRemove.keySet()) { ArrayList<ShortcutInfo> appsToRemove = folderAppsToRemove.get(folder); for (ShortcutInfo info : appsToRemove) { folder.remove(info); } } // Remove all the other children for (View child : childrenToRemove) { // Note: We can not remove the view directly from // CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (childrenToRemove.size() > 0) { layout.requestLayout(); layout.invalidate(); } } // Strip all the empty screens stripEmptyScreens(); }
From source file:com.aidy.launcher3.ui.workspace.Workspace.java
public void removeItemsByComponentName(final HashSet<ComponentName> componentNames) { ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); final HashMap<ItemInfoBean, View> children = new HashMap<ItemInfoBean, View>(); for (int j = 0; j < layout.getChildCount(); j++) { final View view = layout.getChildAt(j); children.put((ItemInfoBean) view.getTag(), view); }/* ww w .j av a 2 s .co m*/ final ArrayList<View> childrenToRemove = new ArrayList<View>(); final HashMap<FolderInfoBean, ArrayList<ShortcutInfo>> folderAppsToRemove = new HashMap<FolderInfoBean, ArrayList<ShortcutInfo>>(); LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfoBean parent, ItemInfoBean info, ComponentName cn) { if (parent instanceof FolderInfoBean) { if (componentNames.contains(cn)) { FolderInfoBean folder = (FolderInfoBean) parent; ArrayList<ShortcutInfo> appsToRemove; if (folderAppsToRemove.containsKey(folder)) { appsToRemove = folderAppsToRemove.get(folder); } else { appsToRemove = new ArrayList<ShortcutInfo>(); folderAppsToRemove.put(folder, appsToRemove); } appsToRemove.add((ShortcutInfo) info); return true; } } else { if (componentNames.contains(cn)) { childrenToRemove.add(children.get(info)); return true; } } return false; } }; LauncherModel.filterItemInfos(children.keySet(), filter); // Remove all the apps from their folders for (FolderInfoBean folder : folderAppsToRemove.keySet()) { ArrayList<ShortcutInfo> appsToRemove = folderAppsToRemove.get(folder); for (ShortcutInfo info : appsToRemove) { folder.remove(info); } } // Remove all the other children for (View child : childrenToRemove) { // Note: We can not remove the view directly from // CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (childrenToRemove.size() > 0) { layout.requestLayout(); layout.invalidate(); } } // Strip all the empty screens stripEmptyScreens(); }
From source file:com.android.launcher3.Launcher.java
@Override public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); // Dump workspace writer.println(prefix + "Workspace Items"); for (int i = mWorkspace.numCustomPages(); i < mWorkspace.getPageCount(); i++) { writer.println(prefix + " Homescreen " + i); ViewGroup layout = ((CellLayout) mWorkspace.getPageAt(i)).getShortcutsAndWidgets(); for (int j = 0; j < layout.getChildCount(); j++) { Object tag = layout.getChildAt(j).getTag(); if (tag != null) { writer.println(prefix + " " + tag.toString()); }/*from w ww . jav a2 s .c o m*/ } } writer.println(prefix + " Hotseat"); ViewGroup layout = mHotseat.getLayout().getShortcutsAndWidgets(); for (int j = 0; j < layout.getChildCount(); j++) { Object tag = layout.getChildAt(j).getTag(); if (tag != null) { writer.println(prefix + " " + tag.toString()); } } try { FileLog.flushAll(writer); } catch (Exception e) { // Ignore } if (mLauncherCallbacks != null) { mLauncherCallbacks.dump(prefix, fd, writer, args); } }
From source file:com.fairphone.fplauncher3.Workspace.java
void removeItemsByComponentName(final HashSet<ComponentName> componentNames, final UserHandleCompat user) { ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); final HashMap<ItemInfo, View> children = new HashMap<ItemInfo, View>(); for (int j = 0; j < layout.getChildCount(); j++) { final View view = layout.getChildAt(j); children.put((ItemInfo) view.getTag(), view); }/*from ww w . ja v a2 s. com*/ final ArrayList<View> childrenToRemove = new ArrayList<View>(); final HashMap<FolderInfo, ArrayList<ShortcutInfo>> folderAppsToRemove = new HashMap<FolderInfo, ArrayList<ShortcutInfo>>(); LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn) { if (parent instanceof FolderInfo) { if (componentNames.contains(cn) && info.user.equals(user)) { FolderInfo folder = (FolderInfo) parent; ArrayList<ShortcutInfo> appsToRemove; if (folderAppsToRemove.containsKey(folder)) { appsToRemove = folderAppsToRemove.get(folder); } else { appsToRemove = new ArrayList<ShortcutInfo>(); folderAppsToRemove.put(folder, appsToRemove); } appsToRemove.add((ShortcutInfo) info); return true; } } else { if (componentNames.contains(cn) && info.user.equals(user)) { childrenToRemove.add(children.get(info)); return true; } } return false; } }; LauncherModel.filterItemInfos(children.keySet(), filter); // Remove all the apps from their folders for (FolderInfo folder : folderAppsToRemove.keySet()) { ArrayList<ShortcutInfo> appsToRemove = folderAppsToRemove.get(folder); for (ShortcutInfo info : appsToRemove) { folder.remove(info); } } // Remove all the other children for (View child : childrenToRemove) { // Note: We can not remove the view directly from CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (!childrenToRemove.isEmpty()) { layout.requestLayout(); layout.invalidate(); } } // Strip all the empty screens stripEmptyScreens(); }
From source file:com.android.launcher4.Workspace.java
/** * Removes items that match the item info specified. When applications are removed * as a part of an update, this is called to ensure that other widgets and application * shortcuts are not removed./* w w w . ja v a2 s . c o m*/ */ void removeItemsByComponentName(final HashSet<ComponentName> componentNames, final UserHandleCompat user) { ArrayList<CellLayout> cellLayouts = getWorkspaceAndHotseatCellLayouts(); for (final CellLayout layoutParent : cellLayouts) { final ViewGroup layout = layoutParent.getShortcutsAndWidgets(); final HashMap<ItemInfo, View> children = new HashMap<ItemInfo, View>(); for (int j = 0; j < layout.getChildCount(); j++) { final View view = layout.getChildAt(j); children.put((ItemInfo) view.getTag(), view); } final ArrayList<View> childrenToRemove = new ArrayList<View>(); final HashMap<FolderInfo, ArrayList<ShortcutInfo>> folderAppsToRemove = new HashMap<FolderInfo, ArrayList<ShortcutInfo>>(); LauncherModel.ItemInfoFilter filter = new LauncherModel.ItemInfoFilter() { @Override public boolean filterItem(ItemInfo parent, ItemInfo info, ComponentName cn) { if (parent instanceof FolderInfo) { if (componentNames.contains(cn) && info.user.equals(user)) { FolderInfo folder = (FolderInfo) parent; ArrayList<ShortcutInfo> appsToRemove; if (folderAppsToRemove.containsKey(folder)) { appsToRemove = folderAppsToRemove.get(folder); } else { appsToRemove = new ArrayList<ShortcutInfo>(); folderAppsToRemove.put(folder, appsToRemove); } appsToRemove.add((ShortcutInfo) info); return true; } } else { if (componentNames.contains(cn) && info.user.equals(user)) { childrenToRemove.add(children.get(info)); return true; } } return false; } }; LauncherModel.filterItemInfos(children.keySet(), filter); // Remove all the apps from their folders for (FolderInfo folder : folderAppsToRemove.keySet()) { ArrayList<ShortcutInfo> appsToRemove = folderAppsToRemove.get(folder); for (ShortcutInfo info : appsToRemove) { folder.remove(info); } } // Remove all the other children for (View child : childrenToRemove) { // Note: We can not remove the view directly from CellLayoutChildren as this // does not re-mark the spaces as unoccupied. layoutParent.removeViewInLayout(child); if (child instanceof DropTarget) { mDragController.removeDropTarget((DropTarget) child); } } if (childrenToRemove.size() > 0) { layout.requestLayout(); layout.invalidate(); } } // Strip all the empty screens stripEmptyScreens(); }