diff options
Diffstat (limited to 'src/tools/qdoc/helpprojectwriter.cpp')
-rw-r--r-- | src/tools/qdoc/helpprojectwriter.cpp | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/src/tools/qdoc/helpprojectwriter.cpp b/src/tools/qdoc/helpprojectwriter.cpp index 90b1d9cfe3..e98b2f5cb1 100644 --- a/src/tools/qdoc/helpprojectwriter.cpp +++ b/src/tools/qdoc/helpprojectwriter.cpp @@ -107,13 +107,13 @@ void HelpProjectWriter::reset(const Config &config, subproject.sortPages = config.getBool(subprefix + "sortPages"); subproject.type = config.getString(subprefix + "type"); readSelectors(subproject, config.getStringList(subprefix + "selectors")); - project.subprojects[name] = subproject; + project.subprojects.append(subproject); } if (project.subprojects.isEmpty()) { SubProject subproject; readSelectors(subproject, config.getStringList(prefix + "selectors")); - project.subprojects.insert(QString(), subproject); + project.subprojects.insert(0, subproject); } projects.append(project); @@ -122,7 +122,7 @@ void HelpProjectWriter::reset(const Config &config, void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList &selectors) { - QHash<QString, Node::Type> typeHash; + QHash<QString, Node::NodeType> typeHash; typeHash["namespace"] = Node::Namespace; typeHash["class"] = Node::Class; typeHash["fake"] = Node::Document; @@ -142,14 +142,14 @@ void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList typeHash["qmlclass"] = Node::QmlType; typeHash["qmlbasictype"] = Node::QmlBasicType; - QHash<QString, Node::SubType> subTypeHash; - subTypeHash["example"] = Node::Example; - subTypeHash["headerfile"] = Node::HeaderFile; - subTypeHash["file"] = Node::File; - subTypeHash["page"] = Node::Page; - subTypeHash["externalpage"] = Node::ExternalPage; + QHash<QString, Node::DocSubtype> docSubtypeHash; + docSubtypeHash["example"] = Node::Example; + docSubtypeHash["headerfile"] = Node::HeaderFile; + docSubtypeHash["file"] = Node::File; + docSubtypeHash["page"] = Node::Page; + docSubtypeHash["externalpage"] = Node::ExternalPage; - QSet<Node::SubType> allSubTypes = QSet<Node::SubType>::fromList(subTypeHash.values()); + QSet<Node::DocSubtype> allSubTypes = QSet<Node::DocSubtype>::fromList(docSubtypeHash.values()); foreach (const QString &selector, selectors) { QStringList pieces = selector.split(QLatin1Char(':')); @@ -161,13 +161,13 @@ void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList QString lower = pieces[0].toLower(); pieces = pieces[1].split(QLatin1Char(',')); if (typeHash.contains(lower)) { - QSet<Node::SubType> subTypes; + QSet<Node::DocSubtype> docSubtypes; for (int i = 0; i < pieces.size(); ++i) { QString lower = pieces[i].toLower(); - if (subTypeHash.contains(lower)) - subTypes.insert(subTypeHash[lower]); + if (docSubtypeHash.contains(lower)) + docSubtypes.insert(docSubtypeHash[lower]); } - subproject.selectors[typeHash[lower]] = subTypes; + subproject.selectors[typeHash[lower]] = docSubtypes; } } } @@ -260,25 +260,25 @@ bool HelpProjectWriter::generateSection(HelpProject &project, // Only add nodes to the set for each subproject if they match a selector. // Those that match will be listed in the table of contents. - foreach (const QString &name, project.subprojects.keys()) { - SubProject subproject = project.subprojects[name]; + for (int i = 0; i < project.subprojects.length(); i++) { + SubProject subproject = project.subprojects[i]; // No selectors: accept all nodes. if (subproject.selectors.isEmpty()) { - project.subprojects[name].nodes[objName] = node; + project.subprojects[i].nodes[objName] = node; } else if (subproject.selectors.contains(node->type())) { // Accept only the node types in the selectors hash. if (node->type() != Node::Document) - project.subprojects[name].nodes[objName] = node; + project.subprojects[i].nodes[objName] = node; else { // Accept only fake nodes with subtypes contained in the selector's // mask. const DocumentNode *docNode = static_cast<const DocumentNode *>(node); - if (subproject.selectors[node->type()].contains(docNode->subType()) && - docNode->subType() != Node::ExternalPage && + if (subproject.selectors[node->type()].contains(docNode->docSubtype()) && + docNode->docSubtype() != Node::ExternalPage && !docNode->fullTitle().isEmpty()) { - project.subprojects[name].nodes[objName] = node; + project.subprojects[i].nodes[objName] = node; } } } @@ -417,11 +417,11 @@ bool HelpProjectWriter::generateSection(HelpProject &project, // attributes. case Node::Document: { const DocumentNode *docNode = static_cast<const DocumentNode*>(node); - if (docNode->subType() != Node::ExternalPage && - docNode->subType() != Node::Image && + if (docNode->docSubtype() != Node::ExternalPage && + docNode->docSubtype() != Node::Image && !docNode->fullTitle().isEmpty()) { - if (docNode->subType() != Node::File) { + if (docNode->docSubtype() != Node::File) { if (docNode->doc().hasKeywords()) { foreach (const Atom *keyword, docNode->doc().keywords()) { if (!keyword->string().isEmpty()) { @@ -467,13 +467,13 @@ void HelpProjectWriter::generateSections(HelpProject &project, /* Don't include index nodes in the help file. Or DITA map nodes. */ - if (node->isIndexNode() || node->subType() == Node::DitaMap) + if (node->isIndexNode() || node->docSubtype() == Node::DitaMap) return; if (!generateSection(project, writer, node)) return; - if (node->isInnerNode()) { - const InnerNode *inner = static_cast<const InnerNode *>(node); + if (node->isAggregate()) { + const Aggregate *inner = static_cast<const Aggregate *>(node); // Ensure that we don't visit nodes more than once. QMap<QString, const Node*> childMap; @@ -497,7 +497,7 @@ void HelpProjectWriter::generateSections(HelpProject &project, because The Qml/Js Property Group is an actual documented thing. */ - const InnerNode* inner = static_cast<const InnerNode*>(childNode); + const Aggregate* inner = static_cast<const Aggregate*>(childNode); foreach (const Node* n, inner->childNodes()) { if (n->access() == Node::Private) continue; @@ -626,7 +626,7 @@ void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer writer.writeAttribute("ref", href); writer.writeAttribute("title", docNode->fullTitle()); - if (docNode->subType() == Node::HeaderFile) + if (docNode->docSubtype() == Node::HeaderFile) addMembers(project, writer, node); writer.writeEndElement(); // section @@ -713,8 +713,8 @@ void HelpProjectWriter::generateProject(HelpProject &project) generateSections(project, writer, rootNode); - foreach (const QString &name, project.subprojects.keys()) { - SubProject subproject = project.subprojects[name]; + for (int i = 0; i < project.subprojects.length(); i++) { + SubProject subproject = project.subprojects[i]; if (subproject.type == QLatin1String("manual")) { @@ -769,13 +769,12 @@ void HelpProjectWriter::generateProject(HelpProject &project) } else { - if (!name.isEmpty()) { - writer.writeStartElement("section"); - QString indexPath = gen_->fullDocumentLocation(qdb_->findNodeForTarget(subproject.indexTitle, 0), + writer.writeStartElement("section"); + QString indexPath = gen_->fullDocumentLocation(qdb_->findNodeForTarget(subproject.indexTitle, 0), false); - writer.writeAttribute("ref", indexPath); - writer.writeAttribute("title", subproject.title); - } + writer.writeAttribute("ref", indexPath); + writer.writeAttribute("title", subproject.title); + if (subproject.sortPages) { QStringList titles = subproject.nodes.keys(); titles.sort(); @@ -815,8 +814,7 @@ void HelpProjectWriter::generateProject(HelpProject &project) } } - if (!name.isEmpty()) - writer.writeEndElement(); // section + writer.writeEndElement(); // section } } |