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>
This commit is contained in:
Casper van Donderen 2012-06-13 19:33:32 +02:00 committed by Qt by Nokia
parent cb74f7b22c
commit f717c19469
2 changed files with 17 additions and 7 deletions

View File

@ -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];

View File

@ -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);