int RKComponentMap::addSubMenu (QDomElement& parent, const QDomElement& description, const QString& cnamespace) { RK_TRACE (PLUGIN); int counter = 0; XMLHelper* xml = XMLHelper::getStaticHelper (); // 1: check whether menu already exists, and create new menu otherwise QDomElement menu_element = findOrCreateElement (parent, "Menu", xml->getStringAttribute (description, "id", "none", DL_ERROR), xml->getStringAttribute (description, "label", i18n ("(no label)"), DL_WARNING), xml->getIntAttribute (description, "index", -1, DL_INFO)); // 2: recurse into submenus (of element to add!) XMLChildList list = xml->getChildElements (description, "menu", DL_INFO); for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) { counter += addSubMenu (menu_element, (*it), cnamespace); } // 3: add entries list = xml->getChildElements (description, "entry", DL_INFO); for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) { QString id = cnamespace + xml->getStringAttribute ((*it), "component", "#invalid#", DL_ERROR); RKComponentHandle* handle = components[id]; if ((!handle) || (!handle->isPlugin ())) { RK_DO (qDebug ("No such component found while creating menu-entries or component is not a standalone plugin: \"%s\". No entry created.", id.latin1 ()), PLUGIN, DL_ERROR); } else { findOrCreateElement (menu_element, "Action", id, QString::null, xml->getIntAttribute ((*it), "index", -1, DL_INFO)); counter++; } } return counter; }
void TaskList::setDataSource(DataSource dataSource) { XmlData::setDataSource(std::move(dataSource)); findOrCreateElement(); }
TaskList::TaskList(DataSource dataSource) : XmlData{std::move(dataSource), QDomElement{}} { findOrCreateElement(); }