summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/qdocindexfiles.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/qdoc/qdocindexfiles.cpp')
-rw-r--r--src/tools/qdoc/qdocindexfiles.cpp61
1 files changed, 55 insertions, 6 deletions
diff --git a/src/tools/qdoc/qdocindexfiles.cpp b/src/tools/qdoc/qdocindexfiles.cpp
index 358c2a14d9..466742ee3a 100644
--- a/src/tools/qdoc/qdocindexfiles.cpp
+++ b/src/tools/qdoc/qdocindexfiles.cpp
@@ -190,6 +190,12 @@ void QDocIndexFiles::readIndexSection(const QDomElement& element,
((element.nodeName() == "page") && (element.attribute("subtype") == "qmlclass"))) {
QmlClassNode* qcn = new QmlClassNode(parent, name);
qcn->setTitle(element.attribute("title"));
+ QString qmlModuleName = element.attribute("qml-module-name");
+ QString qmlModuleVersion = element.attribute("qml-module-version");
+ qdb_->addToQmlModule(qmlModuleName + " " + qmlModuleVersion, qcn);
+ QString qmlFullBaseName = element.attribute("qml-base-type");
+ if (!qmlFullBaseName.isEmpty())
+ qcn->setQmlBaseName(qmlFullBaseName);
if (element.hasAttribute("location"))
name = element.attribute("location", QString());
if (!indexUrl.isEmpty())
@@ -209,6 +215,31 @@ void QDocIndexFiles::readIndexSection(const QDomElement& element,
location = Location(name);
node = qbtn;
}
+ else if (element.nodeName() == "qmlproperty") {
+ QmlClassNode* qcn = static_cast<QmlClassNode*>(parent);
+ QString type = element.attribute("type");
+ bool attached = false;
+ if (element.attribute("attached") == "true")
+ attached = true;
+ bool readonly = false;
+ if (element.attribute("writable") == "false")
+ readonly = true;
+ QmlPropertyNode* qpn = new QmlPropertyNode(qcn, name, type, attached);
+ qpn->setReadOnly(readonly);
+ node = qpn;
+ }
+ else if ((element.nodeName() == "qmlmethod") ||
+ (element.nodeName() == "qmlsignal") ||
+ (element.nodeName() == "qmlsignalhandler")) {
+ Node::Type t = Node::QmlMethod;
+ if (element.nodeName() == "qmlsignal")
+ t = Node::QmlSignal;
+ else if (element.nodeName() == "qmlsignalhandler")
+ t = Node::QmlSignalHandler;
+ bool attached = false;
+ FunctionNode* fn = new FunctionNode(t, parent, name, attached);
+ node = fn;
+ }
else if (element.nodeName() == "page") {
Node::SubType subtype;
Node::PageType ptype = Node::NoPageType;
@@ -476,17 +507,22 @@ void QDocIndexFiles::readIndexSection(const QDomElement& element,
InnerNode* inner = static_cast<InnerNode*>(node);
QDomElement child = element.firstChildElement();
while (!child.isNull()) {
- if (element.nodeName() == "class")
+ if (element.nodeName() == "class") {
readIndexSection(child, inner, indexUrl);
- else if (element.nodeName() == "qmlclass")
+ }
+ else if (element.nodeName() == "qmlclass") {
readIndexSection(child, inner, indexUrl);
- else if (element.nodeName() == "page")
+ }
+ else if (element.nodeName() == "page") {
readIndexSection(child, inner, indexUrl);
- else if (element.nodeName() == "namespace" && !name.isEmpty())
+ }
+ else if (element.nodeName() == "namespace" && !name.isEmpty()) {
// The root node in the index is a namespace with an empty name.
readIndexSection(child, inner, indexUrl);
- else
+ }
+ else {
readIndexSection(child, parent, indexUrl);
+ }
child = child.nextSiblingElement();
}
}
@@ -562,6 +598,9 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
return false;
QString nodeName;
+ QString qmlModuleName;
+ QString qmlModuleVersion;
+ QString qmlFullBaseName;
switch (node->type()) {
case Node::Namespace:
nodeName = "namespace";
@@ -571,8 +610,12 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
break;
case Node::Document:
nodeName = "page";
- if (node->subType() == Node::QmlClass)
+ if (node->subType() == Node::QmlClass) {
nodeName = "qmlclass";
+ qmlModuleName = node->qmlModuleName();
+ qmlModuleVersion = node->qmlModuleVersion();
+ qmlFullBaseName = node->qmlFullBaseName();
+ }
else if (node->subType() == Node::QmlBasicType)
nodeName = "qmlbasictype";
break;
@@ -687,6 +730,12 @@ bool QDocIndexFiles::generateIndexSection(QXmlStreamWriter& writer,
writer.writeAttribute("status", status);
writer.writeAttribute("name", objName);
+ if (!qmlModuleName.isEmpty()) {
+ writer.writeAttribute("qml-module-name", qmlModuleName);
+ writer.writeAttribute("qml-module-version", qmlModuleVersion);
+ if (!qmlFullBaseName.isEmpty())
+ writer.writeAttribute("qml-base-type", qmlFullBaseName);
+ }
QString fullName = node->fullDocumentName();
if (fullName != objName)
writer.writeAttribute("fullname", fullName);