void MetaInfoParser::handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, const QString &className, const QIcon &icon) { if (reader.isStartElement() && reader.name() == "itemlibraryentry") { const QString versionNumber = reader.attributes().value("version").toString(); int major = 1; int minor = 0; if (!versionNumber.isEmpty()) { int val; bool ok; if (versionNumber.contains('.')) { val = versionNumber.split('.').first().toInt(&ok); major = ok ? val : major; val = versionNumber.split('.').last().toInt(&ok); minor = ok ? val : minor; } else { val = versionNumber.toInt(&ok); major = ok ? val : major; } } const QString name = reader.attributes().value("name").toString(); ItemLibraryEntry entry; entry.setType(className, major, minor); entry.setName(name); entry.setIcon(icon); QString iconPath = reader.attributes().value("libraryIcon").toString(); if (!iconPath.isEmpty()) entry.setIconPath(iconPath); QString category = reader.attributes().value("category").toString(); if (!category.isEmpty()) entry.setCategory(category); QString requiredImport = reader.attributes().value("requiredImport").toString(); if (!requiredImport.isEmpty()) entry.setRequiredImport(requiredImport); if (reader.attributes().hasAttribute("forceImport")) { QString forceImport = reader.attributes().value("forceImport").toString(); if (forceImport == QLatin1String("true") || forceImport == QLatin1String("True")) entry.setForceImport(true); else entry.setForceImport(false); } else { entry.setForceImport(false); } while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "itemlibraryentry")) { reader.readNext(); handleItemLibraryEntryPropertyElement(reader, entry); handleItemLibraryEntryQmlElement(reader, entry); } m_metaInfo.itemLibraryInfo()->addEntry(entry); } }