tools/qdoc3/pagegenerator.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 33 3e2da88830cd
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
    41 
    41 
    42 /*
    42 /*
    43   pagegenerator.cpp
    43   pagegenerator.cpp
    44 */
    44 */
    45 
    45 
    46 #include <QtCore>
       
    47 #include <qfile.h>
    46 #include <qfile.h>
    48 #include <qfileinfo.h>
    47 #include <qfileinfo.h>
    49 
    48 
    50 #include "pagegenerator.h"
    49 #include "pagegenerator.h"
    51 #include "tree.h"
    50 #include "tree.h"
    75 void PageGenerator::generateTree(const Tree *tree, CodeMarker *marker)
    74 void PageGenerator::generateTree(const Tree *tree, CodeMarker *marker)
    76 {
    75 {
    77     generateInnerNode(tree->root(), marker);
    76     generateInnerNode(tree->root(), marker);
    78 }
    77 }
    79 
    78 
    80 QString PageGenerator::fileBase(const Node *node)
    79 QString PageGenerator::fileBase(const Node *node) const
    81 {
    80 {
    82     if (node->relates())
    81     if (node->relates())
    83 	node = node->relates();
    82 	node = node->relates();
    84     else if (!node->isInnerNode())
    83     else if (!node->isInnerNode())
    85 	node = node->parent();
    84 	node = node->parent();
   102         /*
   101         /*
   103           To avoid file name conflicts in the html directory,
   102           To avoid file name conflicts in the html directory,
   104           we prepend "qml-" to the file name of QML element doc
   103           we prepend "qml-" to the file name of QML element doc
   105           files.
   104           files.
   106          */
   105          */
   107         if (p->subType() == Node::QmlClass) {
   106         if ((p->subType() == Node::QmlClass) ||
       
   107             (p->subType() == Node::QmlBasicType)) {
   108             base.prepend("qml-");
   108             base.prepend("qml-");
   109         }
   109         }
   110 #endif        
   110 #endif        
   111         if (!pp || pp->name().isEmpty() || pp->type() == Node::Fake)
   111         if (!pp || pp->name().isEmpty() || pp->type() == Node::Fake)
   112             break;
   112             break;
   150     while (res.endsWith(QLatin1Char('-')))
   150     while (res.endsWith(QLatin1Char('-')))
   151         res.chop(1);
   151         res.chop(1);
   152     return res;
   152     return res;
   153 }
   153 }
   154 
   154 
   155 QString PageGenerator::fileName(const Node *node)
   155 QString PageGenerator::fileName(const Node *node) const
   156 {
   156 {
   157     if (!node->url().isEmpty())
   157     if (!node->url().isEmpty())
   158         return node->url();
   158         return node->url();
   159 
   159 
   160     QString name = fileBase(node);
   160     QString name = fileBase(node);
   174     QFile *outFile = new QFile(outputDir() + "/" + fileName);
   174     QFile *outFile = new QFile(outputDir() + "/" + fileName);
   175     if (!outFile->open(QFile::WriteOnly))
   175     if (!outFile->open(QFile::WriteOnly))
   176 	location.fatal(tr("Cannot open output file '%1'")
   176 	location.fatal(tr("Cannot open output file '%1'")
   177 			.arg(outFile->fileName()));
   177 			.arg(outFile->fileName()));
   178     QTextStream *out = new QTextStream(outFile);
   178     QTextStream *out = new QTextStream(outFile);
   179     out->setCodec("ISO-8859-1");
   179     out->setCodec(outputCodec);
   180     outStreamStack.push(out);
   180     outStreamStack.push(out);
   181 }
   181 }
   182 
   182 
   183 void PageGenerator::endSubPage()
   183 void PageGenerator::endSubPage()
   184 {
   184 {
   207             return;
   207             return;
   208 #ifdef QDOC_QML            
   208 #ifdef QDOC_QML            
   209         if (fakeNode->subType() == Node::QmlPropertyGroup)
   209         if (fakeNode->subType() == Node::QmlPropertyGroup)
   210             return;
   210             return;
   211 #endif            
   211 #endif            
       
   212         if (fakeNode->subType() == Node::Page) {
       
   213             if (node->count() > 0)
       
   214                 qDebug("PAGE %s HAS CHILDREN", qPrintable(fakeNode->title()));
       
   215         }
   212     }
   216     }
   213 
   217 
   214     if (node->parent() != 0) {
   218     if (node->parent() != 0) {
   215 	beginSubPage(node->location(), fileName(node));
   219 	beginSubPage(node->location(), fileName(node));
   216 	if (node->type() == Node::Namespace || node->type() == Node::Class) {
   220 	if (node->type() == Node::Namespace || node->type() == Node::Class) {