Orb/Doxygen/src/groupdef.cpp
changeset 4 468f4c8d3d5b
parent 0 42188c7ea2d9
--- a/Orb/Doxygen/src/groupdef.cpp	Fri Apr 23 20:47:58 2010 +0100
+++ b/Orb/Doxygen/src/groupdef.cpp	Wed Aug 11 14:49:30 2010 +0100
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ * Copyright (C) 1997-2010 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -604,7 +604,7 @@
   // write list of files
   if (fileList->count()>0)
   {
-    ol.startMemberHeader();
+    ol.startMemberHeader("files");
     ol.parseText(title);
     ol.endMemberHeader();
     ol.startMemberList();
@@ -645,7 +645,7 @@
   // write list of groups
   if (groupList->count()>0)
   {
-    ol.startMemberHeader();
+    ol.startMemberHeader("groups");
     ol.parseText(title);
     ol.endMemberHeader();
     ol.startMemberList();
@@ -681,7 +681,7 @@
   // write list of directories
   if (dirList->count()>0)
   {
-    ol.startMemberHeader();
+    ol.startMemberHeader("dirs");
     ol.parseText(title);
     ol.endMemberHeader();
     ol.startMemberList();
@@ -803,14 +803,57 @@
   ol.popGeneratorState();
 }
 
+void GroupDef::writeSummaryLinks(OutputList &ol)
+{
+  ol.pushGeneratorState();
+  ol.disableAllBut(OutputGenerator::Html);
+  QListIterator<LayoutDocEntry> eli(
+      LayoutDocManager::instance().docEntries(LayoutDocManager::Group));
+  LayoutDocEntry *lde;
+  bool first=TRUE;
+  for (eli.toFirst();(lde=eli.current());++eli)
+  {
+    if ((lde->kind()==LayoutDocEntry::GroupClasses && classSDict->declVisible()) || 
+        (lde->kind()==LayoutDocEntry::GroupNamespaces && namespaceSDict->declVisible()) ||
+        (lde->kind()==LayoutDocEntry::GroupFiles && fileList->count()>0) ||
+        (lde->kind()==LayoutDocEntry::GroupNestedGroups && groupList->count()>0) ||
+        (lde->kind()==LayoutDocEntry::GroupDirs && dirList->count()>0)
+       )
+    {
+      LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
+      QCString label = lde->kind()==LayoutDocEntry::GroupClasses      ? "nested-classes" : 
+                       lde->kind()==LayoutDocEntry::GroupNamespaces   ? "namespaces"     :
+                       lde->kind()==LayoutDocEntry::GroupFiles        ? "files"          :
+                       lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups"         :
+                       "dirs";
+      writeSummaryLink(ol,label,ls->title,first);
+    }
+    else if (lde->kind()==LayoutDocEntry::MemberDecl)
+    {
+      LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
+      MemberList * ml = getMemberList(lmd->type);
+      if (ml && ml->declVisible())
+      {
+        writeSummaryLink(ol,ml->listTypeAsString(),lmd->title,first);
+      }
+    }
+  }
+  if (!first)
+  {
+    ol.writeString("  </div>\n");
+  }
+  ol.popGeneratorState();
+}
+
 void GroupDef::writeDocumentation(OutputList &ol)
 {
   ol.pushGeneratorState();
   startFile(ol,getOutputFileBase(),name(),title);
-  startTitle(ol,getOutputFileBase());
+  startTitle(ol,getOutputFileBase(),this);
   ol.parseText(title);
   addGroupListToTitle(ol,this);
   endTitle(ol,getOutputFileBase(),title);
+  ol.startContents();
 
   if (Doxygen::searchIndex)
   {