diff options
Diffstat (limited to 'tools/qdoc3/ditaxmlgenerator.cpp')
-rw-r--r-- | tools/qdoc3/ditaxmlgenerator.cpp | 116 |
1 files changed, 91 insertions, 25 deletions
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp index ced14cc..66f4a91 100644 --- a/tools/qdoc3/ditaxmlgenerator.cpp +++ b/tools/qdoc3/ditaxmlgenerator.cpp @@ -1637,11 +1637,7 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark */ generateHeader(inner, fullTitle); generateBrief(inner, marker); // <shortdesc> - - writeStartTag(DT_prolog); - writeStartTag(DT_metadata); - writeEndTag(); // <metadata> - writeEndTag(); // <prolog> + writeProlog(inner,marker); writeStartTag(DT_cxxClassDetail); writeStartTag(DT_cxxClassDefinition); @@ -1764,11 +1760,7 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark generateHeader(inner, fullTitle); generateBrief(inner, marker); // <shortdesc> - - writeStartTag(DT_prolog); - writeStartTag(DT_metadata); - writeEndTag(); // <metadata> - writeEndTag(); // <prolog> + writeProlog(inner,marker); writeStartTag(DT_cxxClassDetail); writeStartTag(DT_cxxClassDefinition); @@ -1909,11 +1901,7 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark */ generateHeader(inner, fullTitle); generateBrief(inner, marker); // <shortdesc> - - writeStartTag(DT_prolog); - writeStartTag(DT_metadata); - writeEndTag(); // <metadata> - writeEndTag(); // <prolog> + writeProlog(inner,marker); writeStartTag(DT_cxxClassDetail); writeStartTag(DT_apiDesc); @@ -2034,12 +2022,8 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark generateHeader(inner, fullTitle); generateBrief(inner, marker); // <shortdesc> + writeProlog(inner,marker); - writeStartTag(DT_prolog); - writeStartTag(DT_metadata); - writeEndTag(); // <metadata> - writeEndTag(); // <prolog> - writeStartTag(DT_cxxClassDetail); writeStartTag(DT_apiDesc); xmlWriter().writeAttribute("spectitle",title); @@ -2148,11 +2132,7 @@ void DitaXmlGenerator::generateFakeNode(const FakeNode* fake, CodeMarker* marker generateHeader(fake, fullTitle); generateBrief(fake, marker); // <shortdesc> - - writeStartTag(DT_prolog); - writeStartTag(DT_metadata); - writeEndTag(); // <metadata> - writeEndTag(); // <prolog> + writeProlog(fake, marker); writeStartTag(DT_body); if (fake->subType() == Node::Module) { @@ -5548,4 +5528,90 @@ void DitaXmlGenerator::writeDitaMap() endSubPage(); } +/*! + Writes the <prolog> element for the \a inner node + using the \a marker. The <prolog> element contains + the <metadata> element, plus some others. This + function writes one or more of these elements: + + \list + \o <audience> + \o <author> + \o <brand> + \o <category> + \o <compomnent> + \o <copyrholder> + \o <copyright> + \o <created> + \o <copyryear> + \o <critdates> + \o <keyword> + \o <keywords> + \o <metadata> + \o <othermeta> + \o <permissions> + \o <platform> + \o <prodinfo> + \o <prodname> + \o <prolog> + \o <publisher> + \o <resourceid> + \o <revised> + \o <source> + \o <tm> + \o <unknown> + \o <vrm> + \o <vrmlist> + \endlist + + */ +void +DitaXmlGenerator::writeProlog(const InnerNode* inner, CodeMarker* marker) +{ + if (!inner) + return; + writeStartTag(DT_prolog); + + writeStartTag(DT_author); + QString author = inner->author(); + if (author.isEmpty()) + author = "Qt Development Frameworks"; + xmlWriter().writeCharacters(author); + writeEndTag(); // <author> + + writeStartTag(DT_metadata); + writeStartTag(DT_category); + QString category = "Page"; + if (inner->type() == Node::Class) + category = "C++ Class"; + else if (inner->type() == Node::Namespace) + category = "C++ Namespace"; + else if (inner->type() == Node::Fake) { + if (inner->subType() == Node::QmlBasicType) + category = "QML Class"; + else if (inner->subType() == Node::QmlClass) + category = "QML Basic Type"; + else if (inner->subType() == Node::HeaderFile) + category = "Header File"; + else if (inner->subType() == Node::Module) + category = "Module"; + else if (inner->subType() == Node::File) + category = "Example Source File"; + else if (inner->subType() == Node::Example) + category = "Example"; + else if (inner->subType() == Node::Image) + category = "Image"; + else if (inner->subType() == Node::Group) + category = "Group"; + else if (inner->subType() == Node::Page) + category = "Page"; + else if (inner->subType() == Node::ExternalPage) + category = "External Page"; // Is this necessary? + } + xmlWriter().writeCharacters(category); + writeEndTag(); // <category> + writeEndTag(); // <metadata> + writeEndTag(); // <prolog> +} + QT_END_NAMESPACE |