diff options
| author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-02-13 11:58:07 +0100 |
|---|---|---|
| committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-02-14 14:24:57 +0100 |
| commit | e65cd6f3794e12e6bc5c2ee985eae8e70ff5f333 (patch) | |
| tree | 8965835c375422d63b2ccfa927b31a56e64bda1d /src/tools/qdoc/helpprojectwriter.cpp | |
| parent | d1ee7189553e13337b198fe4ba66d79fb7a7f41d (diff) | |
| parent | e95a758236cf2c68e33da4ddb62bff4fe8d9dd8b (diff) | |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/concurrent/doc/qtconcurrent.qdocconf
src/corelib/doc/qtcore.qdocconf
src/corelib/global/qglobal.h
src/dbus/doc/qtdbus.qdocconf
src/dbus/qdbusmessage.h
src/gui/doc/qtgui.qdocconf
src/gui/image/qimagereader.cpp
src/network/doc/qtnetwork.qdocconf
src/opengl/doc/qtopengl.qdocconf
src/opengl/qgl.h
src/plugins/platforms/windows/qwindowswindow.cpp
src/printsupport/doc/qtprintsupport.qdocconf
src/sql/doc/qtsql.qdocconf
src/testlib/doc/qttestlib.qdocconf
src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf
src/widgets/doc/qtwidgets.qdocconf
src/xml/doc/qtxml.qdocconf
Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
Diffstat (limited to 'src/tools/qdoc/helpprojectwriter.cpp')
| -rw-r--r-- | src/tools/qdoc/helpprojectwriter.cpp | 140 |
1 files changed, 72 insertions, 68 deletions
diff --git a/src/tools/qdoc/helpprojectwriter.cpp b/src/tools/qdoc/helpprojectwriter.cpp index 09b3629ade4..fdba15700f3 100644 --- a/src/tools/qdoc/helpprojectwriter.cpp +++ b/src/tools/qdoc/helpprojectwriter.cpp @@ -429,17 +429,18 @@ void HelpProjectWriter::generateSections(HelpProject &project, // Ensure that we don't visit nodes more than once. QMap<QString, const Node*> childMap; - foreach (const Node *node, inner->childNodes()) { - if (node->access() == Node::Private) + foreach (const Node *childNode, inner->childNodes()) { + if (childNode->access() == Node::Private) continue; - if (node->type() == Node::Document) { + + if (childNode->type() == Node::Document) { /* Don't visit QML property group nodes, but visit their children, which are all QML property nodes. */ - if (node->subType() == Node::QmlPropertyGroup) { - const InnerNode* inner = static_cast<const InnerNode*>(node); + if (childNode->subType() == Node::QmlPropertyGroup) { + const InnerNode* inner = static_cast<const InnerNode*>(childNode); foreach (const Node* n, inner->childNodes()) { if (n->access() == Node::Private) continue; @@ -447,17 +448,24 @@ void HelpProjectWriter::generateSections(HelpProject &project, } } else - childMap[static_cast<const DocNode *>(node)->fullTitle()] = node; + childMap[static_cast<const DocNode *>(childNode)->fullTitle()] = childNode; } else { - if (node->type() == Node::Function) { - const FunctionNode *funcNode = static_cast<const FunctionNode *>(node); + // Store member status of children + project.memberStatus[node].insert(childNode->status()); + + if (childNode->type() == Node::Function) { + const FunctionNode *funcNode = static_cast<const FunctionNode *>(childNode); if (funcNode->isOverload()) continue; } - childMap[node->fullDocumentName()] = node; + childMap[childNode->fullDocumentName()] = childNode; } } + // Insert files for all/compatibility/obsolete members + addMembers(project, writer, node, false); + if (node->relates()) + addMembers(project, writer, node->relates(), false); foreach (const Node *child, childMap) generateSections(project, writer, child); @@ -483,6 +491,57 @@ void HelpProjectWriter::writeHashFile(QFile &file) hashFile.close(); } +void HelpProjectWriter::writeSection(QXmlStreamWriter &writer, const QString &path, + const QString &value) +{ + writer.writeStartElement(QStringLiteral("section")); + writer.writeAttribute(QStringLiteral("ref"), path); + writer.writeAttribute(QStringLiteral("title"), value); + writer.writeEndElement(); // section +} + +/* + Add files for all members, compatibility members and obsolete members + Also write subsections for these depending on 'writeSections' (default=true). +*/ +void HelpProjectWriter::addMembers(HelpProject &project, QXmlStreamWriter &writer, + const Node *node, bool writeSections) +{ + QString href = gen_->fullDocumentLocation(node,true); + href = href.left(href.size()-5); + if (href.isEmpty()) + return; + + Node::SubType subType = static_cast<const DocNode*>(node)->subType(); + + bool derivedClass = false; + if (node->type() == Node::Class) + derivedClass = !(static_cast<const ClassNode *>(node)->baseClasses().isEmpty()); + + // Do not generate a 'List of all members' for namespaces or header files, + // but always generate it for derived classes and QML classes + if (node->type() != Node::Namespace && subType != Node::HeaderFile && + (derivedClass || subType == Node::QmlClass || + !project.memberStatus[node].isEmpty())) { + QString membersPath = href + QStringLiteral("-members.html"); + project.files.insert(membersPath); + if (writeSections) + writeSection(writer, membersPath, tr("List of all members")); + } + if (project.memberStatus[node].contains(Node::Compat)) { + QString compatPath = href + QStringLiteral("-compat.html"); + project.files.insert(compatPath); + if (writeSections) + writeSection(writer, compatPath, tr("Compatibility members")); + } + if (project.memberStatus[node].contains(Node::Obsolete)) { + QString obsoletePath = href + QStringLiteral("-obsolete.html"); + project.files.insert(obsoletePath); + if (writeSections) + writeSection(writer, obsoletePath, tr("Obsolete members")); + } +} + void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer, const Node *node) { @@ -499,41 +558,12 @@ void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer else writer.writeAttribute("title", tr("%1 Class Reference").arg(objName)); - // Write subsections for all members, obsolete members and Qt 3 - // members. - if (!project.memberStatus[node].isEmpty()) { - QString membersPath = href.left(href.size()-5) + "-members.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", membersPath); - writer.writeAttribute("title", tr("List of all members")); - writer.writeEndElement(); // section - project.files.insert(membersPath); - } - if (project.memberStatus[node].contains(Node::Compat)) { - QString compatPath = href.left(href.size()-5) + "-compat.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", compatPath); - writer.writeAttribute("title", tr("Compatibility members")); - writer.writeEndElement(); // section - project.files.insert(compatPath); - } - if (project.memberStatus[node].contains(Node::Obsolete)) { - QString obsoletePath = href.left(href.size()-5) + "-obsolete.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", obsoletePath); - writer.writeAttribute("title", tr("Obsolete members")); - writer.writeEndElement(); // section - project.files.insert(obsoletePath); - } - + addMembers(project, writer, node); writer.writeEndElement(); // section break; case Node::Namespace: - writer.writeStartElement("section"); - writer.writeAttribute("ref", href); - writer.writeAttribute("title", objName); - writer.writeEndElement(); // section + writeSection(writer, href, objName); break; case Node::Document: { @@ -548,34 +578,8 @@ void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer else writer.writeAttribute("title", docNode->fullTitle()); - if ((docNode->subType() == Node::HeaderFile) || (docNode->subType() == Node::QmlClass)) { - // Write subsections for all members, obsolete members and Qt 3 - // members. - if (!project.memberStatus[node].isEmpty() || (docNode->subType() == Node::QmlClass)) { - QString membersPath = href.left(href.size()-5) + "-members.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", membersPath); - writer.writeAttribute("title", tr("List of all members")); - writer.writeEndElement(); // section - project.files.insert(membersPath); - } - if (project.memberStatus[node].contains(Node::Compat)) { - QString compatPath = href.left(href.size()-5) + "-compat.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", compatPath); - writer.writeAttribute("title", tr("Compatibility members")); - writer.writeEndElement(); // section - project.files.insert(compatPath); - } - if (project.memberStatus[node].contains(Node::Obsolete)) { - QString obsoletePath = href.left(href.size()-5) + "-obsolete.html"; - writer.writeStartElement("section"); - writer.writeAttribute("ref", obsoletePath); - writer.writeAttribute("title", tr("Obsolete members")); - writer.writeEndElement(); // section - project.files.insert(obsoletePath); - } - } + if ((docNode->subType() == Node::HeaderFile) || (docNode->subType() == Node::QmlClass)) + addMembers(project, writer, node); writer.writeEndElement(); // section } |
