QStringList ContainerAreaLayout::listItems() const { QStringList items; for (ItemList::const_iterator it = m_items.constBegin(); it != m_items.constEnd(); ++it) { QLayoutItem* item = (*it)->item; BaseContainer* container = dynamic_cast<BaseContainer*>(item->widget()); if (!container) { continue; } AppletContainer* applet = dynamic_cast<AppletContainer*>(container); if (applet) { items.append(applet->info().desktopFile()); } else { // button containers don't give us anything useful that isn't // i18n'd (e.g. all service buttons and url buttons simply report // "URL" as their tileName()) which would require that we // extend PanelButton to be more expressive to get something more // instead i just cop'd out and use the visible name. good enough. items.append(container->visibleName()); } } return items; }
void PanelRemoveAppletMenu::slotAboutToShow() { int id = 0; clear(); m_containers = m_containerArea->containers("Applet") + m_containerArea->containers("Special Button"); QValueList<PanelMenuItemInfo> items; for (BaseContainer::List::const_iterator it = m_containers.constBegin(); it != m_containers.constEnd();) { BaseContainer* container = *it; if (container->isImmutable()) { ++it; m_containers.remove(container); continue; } items.append(PanelMenuItemInfo(container->icon(), container->visibleName().replace("&", "&&"), id)); ++id; ++it; } qHeapSort(items); for (QValueList<PanelMenuItemInfo>::iterator it = items.begin(); it != items.end(); ++it) { (*it).plug(this); } if (m_containers.count() > 1) { insertSeparator(); insertItem(i18n("All"), this, SLOT(slotRemoveAll()), 0, id); } }