[QGIS Commit] r15069 - trunk/qgis/src/mapserver

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Jan 24 09:05:05 EST 2011


Author: mhugent
Date: 2011-01-24 06:05:05 -0800 (Mon, 24 Jan 2011)
New Revision: 15069

Modified:
   trunk/qgis/src/mapserver/qgsprojectparser.cpp
   trunk/qgis/src/mapserver/qgsprojectparser.h
Log:
Fix for accessing groups in mapserver

Modified: trunk/qgis/src/mapserver/qgsprojectparser.cpp
===================================================================
--- trunk/qgis/src/mapserver/qgsprojectparser.cpp	2011-01-24 10:55:42 UTC (rev 15068)
+++ trunk/qgis/src/mapserver/qgsprojectparser.cpp	2011-01-24 14:05:05 UTC (rev 15069)
@@ -310,16 +310,16 @@
   //maybe the layer is a goup. Check if lName is contained in the group list
   QMap< QString, QDomElement > idLayerMap = projectLayerElementsById();
 
-  QList< GroupLayerInfo > groupInfo = groupLayerRelationshipFromProject();
-  QList< GroupLayerInfo >::const_iterator groupIt = groupInfo.constBegin();
-  for ( ; groupIt != groupInfo.constEnd(); ++groupIt )
+  QList<QDomElement> legendGroups = legendGroupElements();
+  QList<QDomElement>::const_iterator groupIt = legendGroups.constBegin();
+  for ( ; groupIt != legendGroups.constEnd(); ++groupIt )
   {
-    if ( groupIt->first == lName )
+    if ( groupIt->attribute( "name" ) == lName )
     {
-      QList< QString >::const_iterator layerIdIt = groupIt->second.constBegin();
-      for ( ; layerIdIt != groupIt->second.constEnd(); ++layerIdIt )
+      QDomNodeList layerFileList = groupIt->elementsByTagName( "legendlayerfile" );
+      for ( int i = 0; i < layerFileList.size(); ++i )
       {
-        QMap< QString, QDomElement >::const_iterator layerEntry = idLayerMap.find( *layerIdIt );
+        QMap< QString, QDomElement >::const_iterator layerEntry = idLayerMap.find( layerFileList.at( i ).toElement().attribute( "layerid" ) );
         if ( layerEntry != idLayerMap.constEnd() )
         {
           layerList.push_back( createLayerFromElement( layerEntry.value() ) );
@@ -327,6 +327,7 @@
       }
     }
   }
+
   return layerList;
 }
 
@@ -609,6 +610,27 @@
   return layerElemList;
 }
 
+QList<QDomElement> QgsProjectParser::legendGroupElements() const
+{
+  QList<QDomElement> groupList;
+  if ( !mXMLDoc )
+  {
+    return groupList;
+  }
+
+  QDomElement legendElement = mXMLDoc->documentElement().firstChildElement( "legend" );
+  if ( legendElement.isNull() )
+  {
+    return groupList;
+  }
+
+  QDomNodeList groupNodeList = legendElement.elementsByTagName( "legendgroup" );
+  for ( int i = 0; i < groupNodeList.size(); ++i )
+  {
+    groupList.push_back( groupNodeList.at( i ).toElement() );
+  }
+}
+
 QMap< QString, QDomElement > QgsProjectParser::projectLayerElementsById() const
 {
   QMap< QString, QDomElement > layerMap;

Modified: trunk/qgis/src/mapserver/qgsprojectparser.h
===================================================================
--- trunk/qgis/src/mapserver/qgsprojectparser.h	2011-01-24 10:55:42 UTC (rev 15068)
+++ trunk/qgis/src/mapserver/qgsprojectparser.h	2011-01-24 14:05:05 UTC (rev 15069)
@@ -102,6 +102,8 @@
 
     /**Get all layers of the project (ordered same as in the project file)*/
     QList<QDomElement> projectLayerElements() const;
+    /**Returns all legend group elements*/
+    QList<QDomElement> legendGroupElements() const;
     /**Get all layers of the project, accessible by layer id*/
     QMap< QString, QDomElement > projectLayerElementsById() const;
     /**Get all layers of the project, accessible by layer name*/



More information about the QGIS-commit mailing list