summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Boddie <david.boddie@nokia.com>2011-03-08 17:38:50 +0100
committerDavid Boddie <david.boddie@nokia.com>2011-03-08 17:38:50 +0100
commit50671831eb42423db3e41852b68187d8833c2a0c (patch)
tree9a80999fb6953c30d776674631a54bf2a491b8bc /tools
parent7e9c0cbf02be5f7c426a81e53b5b0df39b5328ce (diff)
parent25f3fbc516aad3cbd08deaa890a3f5a93582a13b (diff)
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-doc-team into 4.7
Diffstat (limited to 'tools')
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp131
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h30
-rw-r--r--tools/qdoc3/node.cpp8
-rw-r--r--tools/qdoc3/node.h3
4 files changed, 162 insertions, 10 deletions
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index affe9e1884..66f4a91e5b 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -96,11 +96,21 @@ QString DitaXmlGenerator::ditaTags[] =
"apiDesc",
"APIMap",
"apiName",
+ "audience",
+ "author",
"b",
"body",
"bodydiv",
+ "brand",
+ "category",
"codeblock",
"comment",
+ "component",
+ "copyrholder",
+ "copyright",
+ "copyryear",
+ "created",
+ "critdates",
"cxxAPIMap",
"cxxClass",
"cxxClassAbstract",
@@ -194,6 +204,8 @@ QString DitaXmlGenerator::ditaTags[] =
"cxxVariableReimplemented",
"cxxVariableScopedName",
"cxxVariableStorageClassSpecifierStatic",
+ "data",
+ "data-about",
"dd",
"dl",
"dlentry",
@@ -203,21 +215,33 @@ QString DitaXmlGenerator::ditaTags[] =
"i",
"image",
"keyword",
+ "keywords",
"li",
"link",
"linktext",
"lq",
+ "metadata",
"ol",
+ "othermeta",
"p",
"parameter",
+ "permissions",
"ph",
+ "platform",
"pre",
+ "prodinfo",
+ "prodname",
+ "prolog",
+ "publisher",
"related-links",
+ "resourceid",
+ "revised",
"row",
"section",
"sectiondiv",
"shortdesc",
"simpletable",
+ "source",
"stentry",
"sthead",
"strow",
@@ -233,8 +257,11 @@ QString DitaXmlGenerator::ditaTags[] =
"topicmeta",
"topicref",
"tt",
- "ul",
"u",
+ "ul",
+ "unknown",
+ "vrm",
+ "vrmlist",
"xref",
""
};
@@ -1497,7 +1524,6 @@ int DitaXmlGenerator::generateAtom(const Atom *atom,
}
}
else {
- qDebug() << "ATTR:" << attr;
QStringList spans = attr.split(",");
if (spans.size() == 2) {
if ((spans[0].toInt()>1) || (spans[1].toInt()>1)) {
@@ -1611,9 +1637,8 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
*/
generateHeader(inner, fullTitle);
generateBrief(inner, marker); // <shortdesc>
-
- // not included: <prolog>
-
+ writeProlog(inner,marker);
+
writeStartTag(DT_cxxClassDetail);
writeStartTag(DT_cxxClassDefinition);
writeLocation(nsn);
@@ -1735,8 +1760,7 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
generateHeader(inner, fullTitle);
generateBrief(inner, marker); // <shortdesc>
-
- // not included: <prolog>
+ writeProlog(inner,marker);
writeStartTag(DT_cxxClassDetail);
writeStartTag(DT_cxxClassDefinition);
@@ -1877,6 +1901,8 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
*/
generateHeader(inner, fullTitle);
generateBrief(inner, marker); // <shortdesc>
+ writeProlog(inner,marker);
+
writeStartTag(DT_cxxClassDetail);
writeStartTag(DT_apiDesc);
xmlWriter().writeAttribute("spectitle",title);
@@ -1996,9 +2022,8 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
generateHeader(inner, fullTitle);
generateBrief(inner, marker); // <shortdesc>
+ writeProlog(inner,marker);
- // not included: <prolog>
-
writeStartTag(DT_cxxClassDetail);
writeStartTag(DT_apiDesc);
xmlWriter().writeAttribute("spectitle",title);
@@ -2107,6 +2132,8 @@ void DitaXmlGenerator::generateFakeNode(const FakeNode* fake, CodeMarker* marker
generateHeader(fake, fullTitle);
generateBrief(fake, marker); // <shortdesc>
+ writeProlog(fake, marker);
+
writeStartTag(DT_body);
if (fake->subType() == Node::Module) {
generateStatus(fake, marker);
@@ -5501,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
diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
index fb09013eb5..32a9b94fe1 100644
--- a/tools/qdoc3/ditaxmlgenerator.h
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -87,11 +87,21 @@ class DitaXmlGenerator : public PageGenerator
DT_apiDesc,
DT_APIMap,
DT_apiName,
+ DT_audience,
+ DT_author,
DT_b,
DT_body,
DT_bodydiv,
+ DT_brand,
+ DT_category,
DT_codeblock,
DT_comment,
+ DT_component,
+ DT_copyrholder,
+ DT_copyright,
+ DT_copyryear,
+ DT_created,
+ DT_critdates,
DT_cxxAPIMap,
DT_cxxClass,
DT_cxxClassAbstract,
@@ -185,6 +195,8 @@ class DitaXmlGenerator : public PageGenerator
DT_cxxVariableReimplemented,
DT_cxxVariableScopedName,
DT_cxxVariableStorageClassSpecifierStatic,
+ DT_data,
+ DT_dataabout,
DT_dd,
DT_dl,
DT_dlentry,
@@ -194,21 +206,33 @@ class DitaXmlGenerator : public PageGenerator
DT_i,
DT_image,
DT_keyword,
+ DT_keywords,
DT_li,
DT_link,
DT_linktext,
DT_lq,
+ DT_metadata,
DT_ol,
+ DT_othermeta,
DT_p,
DT_parameter,
+ DT_permissions,
DT_ph,
+ DT_platform,
DT_pre,
+ DT_prodinfo,
+ DT_prodname,
+ DT_prolog,
+ DT_publisher,
DT_relatedLinks,
+ DT_resourceid,
+ DT_revised,
DT_row,
DT_section,
DT_sectiondiv,
DT_shortdesc,
DT_simpletable,
+ DT_source,
DT_stentry,
DT_sthead,
DT_strow,
@@ -224,8 +248,11 @@ class DitaXmlGenerator : public PageGenerator
DT_topicmeta,
DT_topicref,
DT_tt,
- DT_ul,
DT_u,
+ DT_ul,
+ DT_unknown,
+ DT_vrm,
+ DT_vrmlist,
DT_xref,
DT_LAST
};
@@ -288,6 +315,7 @@ class DitaXmlGenerator : public PageGenerator
void writePropertyParameter(const QString& tag, const NodeList& nlist);
void writeRelatedLinks(const FakeNode* fake, CodeMarker* marker);
void writeLink(const Node* node, const QString& tex, const QString& role);
+ void writeProlog(const InnerNode* inner, CodeMarker* marker);
private:
enum SubTitleSize { SmallSubTitle, LargeSubTitle };
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index ee050f52da..161c87ae6c 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -771,6 +771,14 @@ void InnerNode::removeChild(Node *child)
}
}
+/*! \fn QString InnerNode::author() const
+ Returns the author.
+ */
+
+/*! \fn void InnerNode::setAuthor(const QString& author)
+ Sets the \a author.
+ */
+
/*!
Find the module (QtCore, QtGui, etc.) to which the class belongs.
We do this by obtaining the full path to the header file's location
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index d1123dcdc1..3869e68095 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -262,6 +262,8 @@ class InnerNode : public Node
NodeList overloads(const QString &funcName) const;
const QStringList& includes() const { return inc; }
+ QString author() const { return author_; }
+ void setAuthor(const QString& author) { author_ = author; }
QStringList primaryKeys();
QStringList secondaryKeys();
const QStringList& pageKeywords() const { return pageKeywds; }
@@ -280,6 +282,7 @@ class InnerNode : public Node
void removeChild(Node* child);
void removeRelated(Node* pseudoChild);
+ QString author_;
QStringList pageKeywds;
QStringList inc;
NodeList children;