tools/qdoc3/htmlgenerator.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/tools/qdoc3/htmlgenerator.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/tools/qdoc3/htmlgenerator.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -2300,7 +2300,8 @@
                           << "&nbsp;</b>";
                 }
                 out() << "</td>\n";
-                    
+
+                out() << "<td>";
                 if ((currentParagraphNo[i] < NumParagraphs) &&
                     !paragraphName[currentParagraphNo[i]].isEmpty()) {
                     NodeMap::Iterator it;
@@ -2308,7 +2309,6 @@
                     for (j = 0; j < currentOffsetInParagraph[i]; j++)
                         ++it;
 
-                    out() << "<td>";
                     // Previously, we used generateFullName() for this, but we
                     // require some special formatting.
                     out() << "<a href=\""
@@ -2322,8 +2322,8 @@
                         generateFullName(it.value()->parent(), relative, marker);
                         out() << ")";
                     }
-                    out() << "</td>\n";
-                 }
+                }
+                out() << "</td>\n";
 
                 currentOffset[i]++;
                 currentOffsetInParagraph[i]++;
@@ -3429,6 +3429,8 @@
     if (node->type() == Node::Fake) {
         if (static_cast<const FakeNode *>(node)->subType() == Node::ExternalPage)
             return node->name();
+        if (static_cast<const FakeNode *>(node)->subType() == Node::Image)
+            return node->name();
     }
     return PageGenerator::fileName(node);
 }
@@ -3467,10 +3469,13 @@
                 ref += "-" + QString::number(func->overloadNumber());
         }
         break;
-    case Node::Property:
-#ifdef QDOC_QML
+#ifdef QDOC_QML        
+    case Node::Fake:
+        if (node->subType() != Node::QmlPropertyGroup)
+            break;
     case Node::QmlProperty:
 #endif        
+    case Node::Property:
         ref = node->name() + "-prop";
         break;
 #ifdef QDOC_QML
@@ -3512,9 +3517,9 @@
     // ### reintroduce this test, without breaking .dcf files
     if (fn != outFileName())
 #endif
-        link += fn;
-
-    if (!node->isInnerNode()) {
+    link += fn;
+
+    if (!node->isInnerNode() || node->subType() == Node::QmlPropertyGroup) {
         ref = refForNode(node);
         if (relative && fn == fileName(relative) && ref == refForNode(relative))
             return QString();
@@ -3997,6 +4002,8 @@
 
         if (path.isEmpty()) {
             link = linkForNode(*node, relative);
+            if (*node && (*node)->subType() == Node::Image)
+                link = "images/used-in-examples/" + link;
             if (targetAtom)
                 link += "#" + refForAtom(targetAtom, *node);
         }
@@ -4077,7 +4084,7 @@
 
     QStringList macRefs = marker->macRefsForNode(node);
     foreach (const QString &macRef, macRefs)
-        out() << "<a name=\"" << "//apple_ref/" << macRef << "\" />\n";
+        out() << "<a name=\"" << "//apple_ref/" << macRef << "\"></a>\n";
 }
 
 void HtmlGenerator::beginLink(const QString &link,
@@ -4189,13 +4196,15 @@
         const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(node);
         NodeList::ConstIterator p = qpgn->childNodes().begin();
         out() << "<div class=\"qmlproto\">";
-        out() << "<table class=\"qmlname\">";
+        out() << "<table width=\"100%\" class=\"qmlname\">";
 
         while (p != qpgn->childNodes().end()) {
             if ((*p)->type() == Node::QmlProperty) {
                 qpn = static_cast<const QmlPropertyNode*>(*p);
                 out() << "<tr><td>";
                 out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
+                if (!qpn->isWritable())
+                    out() << "<span class=\"qmlreadonly\">read-only</span>";
                 generateQmlItem(qpn, relative, marker, false);
                 out() << "</td></tr>";
                 if (qpgn->isDefault()) {
@@ -4214,23 +4223,24 @@
         out() << "</div>";
     }
     else if (node->type() == Node::QmlSignal) {
-        const QmlSignalNode* qsn = static_cast<const QmlSignalNode*>(node);
+        const FunctionNode* qsn = static_cast<const FunctionNode*>(node);
         out() << "<div class=\"qmlproto\">";
         out() << "<table class=\"qmlname\">";
         out() << "<tr><td>";
         out() << "<a name=\"" + refForNode(qsn) + "\"></a>";
-        generateQmlItem(qsn,relative,marker,false);
+        generateSynopsis(qsn,relative,marker,CodeMarker::Detailed,false);
+        //generateQmlItem(qsn,relative,marker,false);
         out() << "</td></tr>";
         out() << "</table>";
         out() << "</div>";
     }
     else if (node->type() == Node::QmlMethod) {
-        const QmlMethodNode* qmn = static_cast<const QmlMethodNode*>(node);
+        const FunctionNode* qmn = static_cast<const FunctionNode*>(node);
         out() << "<div class=\"qmlproto\">";
         out() << "<table class=\"qmlname\">";
         out() << "<tr><td>";
         out() << "<a name=\"" + refForNode(qmn) + "\"></a>";
-        generateQmlItem(qmn,relative,marker,false);
+        generateSynopsis(qmn,relative,marker,CodeMarker::Detailed,false);
         out() << "</td></tr>";
         out() << "</table>";
         out() << "</div>";
@@ -4276,7 +4286,7 @@
 }
 
 /*!
-  Output the "[Xxx instantiates the C++ class QFxXxx]"
+  Output the "[Xxx instantiates the C++ class QmlGraphicsXxx]"
   line for the QML element, if there should be one.
 
   If there is no class node, or if the class node status
@@ -4306,7 +4316,7 @@
 }
 
 /*!
-  Output the "[QFxXxx is instantiated by QML element Xxx]"
+  Output the "[QmlGraphicsXxx is instantiated by QML element Xxx]"
   line for the class, if there should be one.
 
   If there is no QML element, or if the class node status