//! [9] QObjectXmlModel::AllMetaObjects QObjectXmlModel::allMetaObjects() const { QXmlQuery query(namePool()); query.bindVariable("root", root()); query.setQuery("declare variable $root external;" "$root/descendant-or-self::QObject"); Q_ASSERT(query.isValid()); QXmlResultItems result; query.evaluateTo(&result); QXmlItem i(result.next()); AllMetaObjects objects; while (!i.isNull()) { const QMetaObject *moo = asQObject(i.toNodeModelIndex())->metaObject(); while (moo) { if (!objects.contains(moo)) objects.append(moo); moo = moo->superClass(); } i = result.next(); } Q_ASSERT(!objects.contains(0)); return objects; }
//! [2] FileTree::FileTree(const QXmlNamePool& pool) : QSimpleXmlNodeModel(pool), m_filterAllowAll(QDir::AllEntries | QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Hidden), m_sortFlags(QDir::Name) { QXmlNamePool np = namePool(); m_names.resize(7); m_names[File] = QXmlName(np, QLatin1String("file")); m_names[Directory] = QXmlName(np, QLatin1String("directory")); m_names[AttributeFileName] = QXmlName(np, QLatin1String("fileName")); m_names[AttributeFilePath] = QXmlName(np, QLatin1String("filePath")); m_names[AttributeSize] = QXmlName(np, QLatin1String("size")); m_names[AttributeMIMEType] = QXmlName(np, QLatin1String("mimeType")); m_names[AttributeSuffix] = QXmlName(np, QLatin1String("suffix")); }
QXmlName QObjectXmlModel::name(const QXmlNodeModelIndex &n) const { switch (toNodeType(n)) { case IsQObject: return QXmlName(namePool(), QLatin1String("QObject")); case MetaObject: return QXmlName(namePool(), QLatin1String("metaObject")); case QObjectClassName: case MetaObjectClassName: return QXmlName(namePool(), QLatin1String("className")); case QObjectProperty: return QXmlName(namePool(), toMetaProperty(n).name()); case MetaObjects: return QXmlName(namePool(), QLatin1String("metaObjects")); case MetaObjectSuperClass: return QXmlName(namePool(), QLatin1String("superClass")); } Q_ASSERT(false); return QXmlName(); }