diff options
author | Topi Reinio <topi.reinio@qt.io> | 2019-09-20 00:19:45 +0200 |
---|---|---|
committer | Topi Reinio <topi.reinio@qt.io> | 2019-09-26 13:46:42 +0200 |
commit | c8e79294237260d735324663932a676d8084efcb (patch) | |
tree | 1517a467aa08536fb3124e4ac6bf8cb7b15dda6d | |
parent | 3f3cf9dd93bfcb6c8989afa45f391633d007c8ce (diff) | |
download | qttools-c8e79294237260d735324663932a676d8084efcb.tar.gz |
qdoc: WebXML output: Fix output for \group and \annotatedlist
The WebXMLGenerator did not handle atoms of type AnnotatedList. Adding
this enables listing of grouped pages with the \annotatedlist command.
Similarly, empty output page was generated for the \group page itself.
This was because QDocIndexFiles::generateIndexSections() only handled
groups when processing the root node, which we must skip in this
generator.
Add explicit handling for group nodes, enabling us to receive
callbacks from QDocIndexFiles to add content for these pages.
Task-number: PYSIDE-1088
Change-Id: Id72d589a51fc7aae21ad5cdbb3c1dfa78d4c23ae
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
-rw-r--r-- | src/qdoc/webxmlgenerator.cpp | 34 | ||||
-rw-r--r-- | src/qdoc/webxmlgenerator.h | 1 |
2 files changed, 29 insertions, 6 deletions
diff --git a/src/qdoc/webxmlgenerator.cpp b/src/qdoc/webxmlgenerator.cpp index 20c655890..cc067b480 100644 --- a/src/qdoc/webxmlgenerator.cpp +++ b/src/qdoc/webxmlgenerator.cpp @@ -166,6 +166,9 @@ void WebXMLGenerator::generateIndexSections(QXmlStreamWriter &writer, Node *node { marker_ = CodeMarker::markerForFileName(node->location().filePath()); QDocIndexFiles::qdocIndexFiles()->generateIndexSections(writer, node, this); + // generateIndexSections does nothing for groups, so handle them explicitly + if (node->isGroup()) + QDocIndexFiles::qdocIndexFiles()->generateIndexSection(writer, node, this); } // Handles callbacks from QDocIndexFiles to add documentation to node @@ -230,10 +233,15 @@ void WebXMLGenerator::append(QXmlStreamWriter &writer, Node *node) } writer.writeEndElement(); // see-also } + if (node->isExample()) { supplement = true; generateRequiredLinks(node, marker_); supplement = false; + } else if (node->isGroup()) { + CollectionNode *cn = static_cast<CollectionNode *>(node); + if (!cn->noAutoList()) + generateAnnotatedList(writer, node, cn->members()); } writer.writeEndElement(); // description @@ -281,6 +289,13 @@ const Atom *WebXMLGenerator::addAtomElements(QXmlStreamWriter &writer, bool keepQuoting = false; switch (atom->type()) { + case Atom::AnnotatedList: + { + const CollectionNode* cn = qdb_->getCollectionNode(atom->string(), Node::Group); + if (cn) + generateAnnotatedList(writer, relative, cn->members()); + } + break; case Atom::AutoLink: if (!inLink && !inSectionHeading) { const Node *node = nullptr; @@ -865,13 +880,16 @@ void WebXMLGenerator::generateRelations(QXmlStreamWriter &writer, const Node *no void WebXMLGenerator::generateAnnotatedList(QXmlStreamWriter &writer, const Node *relative, const NodeMap &nodeMap) { + generateAnnotatedList(writer, relative, nodeMap.values()); +} + +void WebXMLGenerator::generateAnnotatedList(QXmlStreamWriter &writer, + const Node *relative, const NodeList &nodeList) +{ writer.writeStartElement("table"); writer.writeAttribute("width", "100%"); - for (NodeMap::const_iterator it = nodeMap.cbegin(), - end = nodeMap.cend(); it != end; ++it) { - const Node *node = it.value(); - + for (const auto *node : nodeList) { writer.writeStartElement("row"); writer.writeStartElement("heading"); generateFullName(writer, node, relative); @@ -888,10 +906,14 @@ void WebXMLGenerator::generateAnnotatedList(QXmlStreamWriter &writer, void WebXMLGenerator::generateFullName(QXmlStreamWriter &writer, const Node *node, const Node *relative) { + QString type = targetType(node); + QString name = node->fullName(relative); writer.writeStartElement("link"); writer.writeAttribute("href", fullDocumentLocation(node)); - writer.writeAttribute("type", targetType(node)); - writer.writeCharacters(node->fullName(relative)); + writer.writeAttribute("type", type); + if (type == QLatin1String("page")) + writer.writeAttribute("page", name); + writer.writeCharacters(name); writer.writeEndElement(); // link } diff --git a/src/qdoc/webxmlgenerator.h b/src/qdoc/webxmlgenerator.h index bdd28dd2f..cfb87382b 100644 --- a/src/qdoc/webxmlgenerator.h +++ b/src/qdoc/webxmlgenerator.h @@ -67,6 +67,7 @@ protected: private: const QPair<QString,QString> anchorForNode(const Node *node); void generateAnnotatedList(QXmlStreamWriter &writer, const Node *relative, const NodeMap &nodeMap); + void generateAnnotatedList(QXmlStreamWriter &writer, const Node *relative, const NodeList &nodeList); void generateFullName(QXmlStreamWriter &writer, const Node *node, const Node *relative); void generateRelations(QXmlStreamWriter &writer, const Node *node); |