[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