From c0608b2ca1468e1bb1ba6eec835118b459240cc5 Mon Sep 17 00:00:00 2001
From: Martin Smith
Date: Fri, 1 Oct 2010 15:02:00 +0200
Subject: qdoc: More complete QML elements.
Still missing some links for QML basic types.
---
tools/qdoc3/ditaxmlgenerator.cpp | 158 ++++++++++++++++++++-------------------
1 file changed, 82 insertions(+), 76 deletions(-)
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index 2ee7a45..0291054 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -638,6 +638,33 @@ void DitaXmlGenerator::startText(const Node* /* relative */,
sectionNumber.clear();
}
+static int countTableColumns(const Atom* t)
+{
+ int result = 0;
+ if (t->type() == Atom::TableHeaderLeft) {
+ while (t->type() == Atom::TableHeaderLeft) {
+ int count = 0;
+ t = t->next();
+ while (t->type() != Atom::TableHeaderRight) {
+ if (t->type() == Atom::TableItemLeft)
+ ++count;
+ t = t->next();
+ }
+ if (count > result)
+ result = count;
+ t = t->next();
+ }
+ }
+ else if (t->type() == Atom::TableRowLeft) {
+ while (t->type() != Atom::TableRowRight) {
+ if (t->type() == Atom::TableItemLeft)
+ ++result;
+ t = t->next();
+ }
+ }
+ return result;
+}
+
/*!
Generate html from an instance of Atom.
*/
@@ -1357,19 +1384,7 @@ int DitaXmlGenerator::generateAtom(const Atom *atom,
qDebug() << "ERROR: Nested tables!";
tableColumnCount = 0;
}
- const Atom* t = atom->next();
- while (t->type() == Atom::TableHeaderLeft) {
- int count = 0;
- t = t->next();
- while (t->type() != Atom::TableHeaderRight) {
- if (t->type() == Atom::TableItemLeft)
- ++count;
- t = t->next();
- }
- if (count > tableColumnCount)
- tableColumnCount = count;
- t = t->next();
- }
+ tableColumnCount = countTableColumns(atom->next());
xmlWriter().writeStartElement("tgroup");
xmlWriter().writeAttribute("cols",QString::number(tableColumnCount));
inTableHeader = false;
@@ -1793,8 +1808,15 @@ void DitaXmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker
sections = marker->qmlSections(qml_cn,CodeMarker::Summary,0);
s = sections.begin();
while (s != sections.end()) {
- writeTargetAndHeader((*s).name,protectEnc((*s).name),"h2");
+ xmlWriter().writeStartElement("section");
+ QString attr = cleanRef((*s).name).toLower();
+ xmlWriter().writeAttribute("outputclass",attr);
+ xmlWriter().writeStartElement("title");
+ xmlWriter().writeAttribute("outputclass","h2");
+ xmlWriter().writeCharacters(protectEnc((*s).name));
+ xmlWriter().writeEndElement(); //
generateQmlSummary(*s,fake,marker);
+ xmlWriter().writeEndElement(); //
++s;
}
@@ -1809,15 +1831,21 @@ void DitaXmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker
sections = marker->qmlSections(qml_cn,CodeMarker::Detailed,0);
s = sections.begin();
while (s != sections.end()) {
- xmlWriter().writeStartElement("p");
- xmlWriter().writeAttribute("outputclass","h2");
- xmlWriter().writeCharacters(protectEnc((*s).name));
- xmlWriter().writeEndElement(); //
- NodeList::ConstIterator m = (*s).members.begin();
- while (m != (*s).members.end()) {
- generateDetailedQmlMember(*m, fake, marker);
- //out() << "
\n";
- ++m;
+ if (!s->members.isEmpty()) {
+ QString attr;
+ xmlWriter().writeStartElement("section");
+ attr = cleanRef((*s).name).toLower();
+ xmlWriter().writeAttribute("outputclass",attr);
+ xmlWriter().writeStartElement("title");
+ xmlWriter().writeAttribute("outputclass","h2");
+ xmlWriter().writeCharacters(protectEnc((*s).name));
+ xmlWriter().writeEndElement(); //
+ NodeList::ConstIterator m = (*s).members.begin();
+ while (m != (*s).members.end()) {
+ generateDetailedQmlMember(*m, fake, marker);
+ ++m;
+ }
+ xmlWriter().writeEndElement(); //
}
++s;
}
@@ -3317,7 +3345,7 @@ void DitaXmlGenerator::writeText(const QString& markedCode,
}
xmlWriter().writeEndElement(); //
xmlWriter().writeStartElement("entry");
- xmlWriter().writeAttribute("outputclass=","memItemRight bottomAlign");
+ xmlWriter().writeAttribute("outputclass","memItemRight bottomAlign");
done = true;
}
i += 2;
@@ -4324,81 +4352,59 @@ void DitaXmlGenerator::generateDetailedQmlMember(const Node* node,
CodeMarker* marker)
{
QString marked;
- const QmlPropertyNode* qpn = 0;
- out() << "";
+ QmlPropertyNode* qpn = 0;
if (node->subType() == Node::QmlPropertyGroup) {
const QmlPropGroupNode* qpgn = static_cast
(node);
NodeList::ConstIterator p = qpgn->childNodes().begin();
- out() << "";
- out() << "
";
-
+ xmlWriter().writeStartElement("ul");
while (p != qpgn->childNodes().end()) {
if ((*p)->type() == Node::QmlProperty) {
qpn = static_cast(*p);
-
- if (++numTableRows % 2 == 1)
- out() << "";
- else
- out() << "
";
-
- out() << "";
- //out() << " |
"; // old
- out() << "";
+ xmlWriter().writeStartElement("li");
+ writeGuidAttribute(qpn);
+ QString attr;
if (!qpn->isWritable(myTree))
- out() << "read-only";
- if (qpgn->isDefault())
- out() << "default";
+ attr = "read-only";
+ if (qpgn->isDefault()) {
+ if (!attr.isEmpty())
+ attr += " ";
+ attr += "default";
+ }
+ if (!attr.isEmpty())
+ xmlWriter().writeAttribute("outputclass",attr);
generateQmlItem(qpn, relative, marker, false);
- out() << " |
";
+ xmlWriter().writeEndElement(); //
}
++p;
}
- out() << "
";
- out() << "
";
+ xmlWriter().writeEndElement(); //
}
else if (node->type() == Node::QmlSignal) {
- const FunctionNode* qsn = static_cast(node);
- out() << "";
- out() << "
";
- //out() << "";
- if (++numTableRows % 2 == 1)
- out() << "
";
- else
- out() << "
";
- out() << "";
- out() << "";
- marked = getMarkedUpSynopsis(qsn, relative, marker, CodeMarker::Detailed);
+ Node* n = const_cast(node);
+ xmlWriter().writeStartElement("ul");
+ xmlWriter().writeStartElement("li");
+ writeGuidAttribute(n);
+ marked = getMarkedUpSynopsis(n, relative, marker, CodeMarker::Detailed);
writeText(marked, marker, relative);
- //generateQmlItem(qsn,relative,marker,false);
- out() << " |
";
- out() << "
";
- out() << "
";
+ generateQmlItem(n, relative, marker, false);
+ xmlWriter().writeEndElement(); //
+ xmlWriter().writeEndElement(); //
}
else if (node->type() == Node::QmlMethod) {
- const FunctionNode* qmn = static_cast(node);
- out() << "";
- out() << "
";
- //out() << "";
- if (++numTableRows % 2 == 1)
- out() << "
";
- else
- out() << "
";
- out() << "";
- out() << "";
- marked = getMarkedUpSynopsis(qmn, relative, marker, CodeMarker::Detailed);
+ Node* n = const_cast(node);
+ xmlWriter().writeStartElement("ul");
+ xmlWriter().writeStartElement("li");
+ writeGuidAttribute(n);
+ marked = getMarkedUpSynopsis(n, relative, marker, CodeMarker::Detailed);
writeText(marked, marker, relative);
- out() << " |
";
- out() << "
";
- out() << "
";
+ xmlWriter().writeEndElement(); //
+ xmlWriter().writeEndElement(); //
}
- out() << "";
generateStatus(node, marker);
generateBody(node, marker);
generateThreadSafeness(node, marker);
generateSince(node, marker);
generateAlsoList(node, marker);
- out() << "
";
- out() << " ";
}
/*!
--
cgit v0.12