summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorCasper van Donderen <casper.vandonderen@nokia.com>2012-06-13 19:33:32 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-21 12:50:08 +0200
commitf717c19469bff6b2de84e70b0f5725e546a7636d (patch)
treecd698f7b28c84ccdc5d6c7fd791d471217c6a34c /src/tools
parentcb74f7b22c2f4148287c40ab7308a6b7414237c5 (diff)
QDoc: Use the module page as link in qt.ditamap.
If the number of [QML]module pages in a single qdoc run is 1: Use it as the link for the nested group of documentation pages in the automatically generated ditamap. Change-Id: Idbc3e2e5d65a1e7f0201638102ffab62475a66ec Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/qdoc/ditaxmlgenerator.cpp22
-rw-r--r--src/tools/qdoc/ditaxmlgenerator.h2
2 files changed, 17 insertions, 7 deletions
diff --git a/src/tools/qdoc/ditaxmlgenerator.cpp b/src/tools/qdoc/ditaxmlgenerator.cpp
index da036a3385..406e16eeee 100644
--- a/src/tools/qdoc/ditaxmlgenerator.cpp
+++ b/src/tools/qdoc/ditaxmlgenerator.cpp
@@ -6053,14 +6053,22 @@ void DitaXmlGenerator::writeDitaMap(Tree *tree)
writeTopicrefs(pageTypeMaps[Node::FAQPage], "FAQs");
writeTopicrefs(pageTypeMaps[Node::ArticlePage], "Articles");
writeTopicrefs(nodeSubtypeMaps[Node::Example], "Examples");
- writeTopicrefs(nodeSubtypeMaps[Node::QmlClass], "QML types");
- writeTopicrefs(nodeTypeMaps[Node::Class], "C++ classes");
+ if (nodeSubtypeMaps[Node::QmlModule]->size() > 1)
+ writeTopicrefs(nodeSubtypeMaps[Node::QmlModule], "QML modules");
+ if (nodeSubtypeMaps[Node::QmlModule]->size() == 1)
+ writeTopicrefs(nodeSubtypeMaps[Node::QmlClass], "QML types", nodeSubtypeMaps[Node::QmlModule]->values()[0]);
+ else
+ writeTopicrefs(nodeSubtypeMaps[Node::QmlClass], "QML types");
+ writeTopicrefs(nodeSubtypeMaps[Node::QmlBasicType], "QML basic types");
+ if (nodeSubtypeMaps[Node::Module]->size() > 1)
+ writeTopicrefs(nodeSubtypeMaps[Node::Module], "Modules");
+ if (nodeSubtypeMaps[Node::Module]->size() == 1)
+ writeTopicrefs(nodeTypeMaps[Node::Class], "C++ classes", nodeSubtypeMaps[Node::Module]->values()[0]);
+ else
+ writeTopicrefs(nodeTypeMaps[Node::Class], "C++ classes");
writeTopicrefs(nodeTypeMaps[Node::Namespace], "C++ namespaces");
writeTopicrefs(nodeSubtypeMaps[Node::HeaderFile], "Header files");
- writeTopicrefs(nodeSubtypeMaps[Node::Module], "Modules");
writeTopicrefs(nodeSubtypeMaps[Node::Group], "Groups");
- writeTopicrefs(nodeSubtypeMaps[Node::QmlModule], "QML modules");
- writeTopicrefs(nodeSubtypeMaps[Node::QmlBasicType], "QML basic types");
writeEndTag(); // </topicref>
endSubPage();
@@ -6119,12 +6127,14 @@ void DitaXmlGenerator::writeDitaRefs(const DitaRefList& ditarefs)
}
}
-void DitaXmlGenerator::writeTopicrefs(NodeMultiMap* nmm, const QString& navtitle)
+void DitaXmlGenerator::writeTopicrefs(NodeMultiMap* nmm, const QString& navtitle, Node* headingnode)
{
if (!nmm || nmm->isEmpty())
return;
writeStartTag(DT_topicref);
xmlWriter().writeAttribute("navtitle",navtitle);
+ if (headingnode)
+ xmlWriter().writeAttribute("href",fileName(headingnode));
NodeMultiMap::iterator i;
NodeMultiMap *ditaMaps = pageTypeMaps[Node::DitaMapPage];
diff --git a/src/tools/qdoc/ditaxmlgenerator.h b/src/tools/qdoc/ditaxmlgenerator.h
index 3ea43ff716..29e93f4840 100644
--- a/src/tools/qdoc/ditaxmlgenerator.h
+++ b/src/tools/qdoc/ditaxmlgenerator.h
@@ -500,7 +500,7 @@ private:
QString stripMarkup(const QString& src) const;
Node* collectNodesByTypeAndSubtype(const InnerNode* parent);
void writeDitaRefs(const DitaRefList& ditarefs);
- void writeTopicrefs(NodeMultiMap* nmm, const QString& navtitle);
+ void writeTopicrefs(NodeMultiMap* nmm, const QString& navtitle, Node* headingnode = 0);
bool isDuplicate(NodeMultiMap* nmm, const QString& key, Node* node);
void debugPara(const QString& t);