Skip to content

Commit 55537d6

Browse files
author
mhugent
committedJan 24, 2011
Fix for accessing groups in mapserver
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15069 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed
 

‎src/mapserver/qgsprojectparser.cpp

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -310,23 +310,24 @@ QList<QgsMapLayer*> QgsProjectParser::mapLayerFromStyle( const QString& lName, c
310310
//maybe the layer is a goup. Check if lName is contained in the group list
311311
QMap< QString, QDomElement > idLayerMap = projectLayerElementsById();
312312

313-
QList< GroupLayerInfo > groupInfo = groupLayerRelationshipFromProject();
314-
QList< GroupLayerInfo >::const_iterator groupIt = groupInfo.constBegin();
315-
for ( ; groupIt != groupInfo.constEnd(); ++groupIt )
313+
QList<QDomElement> legendGroups = legendGroupElements();
314+
QList<QDomElement>::const_iterator groupIt = legendGroups.constBegin();
315+
for ( ; groupIt != legendGroups.constEnd(); ++groupIt )
316316
{
317-
if ( groupIt->first == lName )
317+
if ( groupIt->attribute( "name" ) == lName )
318318
{
319-
QList< QString >::const_iterator layerIdIt = groupIt->second.constBegin();
320-
for ( ; layerIdIt != groupIt->second.constEnd(); ++layerIdIt )
319+
QDomNodeList layerFileList = groupIt->elementsByTagName( "legendlayerfile" );
320+
for ( int i = 0; i < layerFileList.size(); ++i )
321321
{
322-
QMap< QString, QDomElement >::const_iterator layerEntry = idLayerMap.find( *layerIdIt );
322+
QMap< QString, QDomElement >::const_iterator layerEntry = idLayerMap.find( layerFileList.at( i ).toElement().attribute( "layerid" ) );
323323
if ( layerEntry != idLayerMap.constEnd() )
324324
{
325325
layerList.push_back( createLayerFromElement( layerEntry.value() ) );
326326
}
327327
}
328328
}
329329
}
330+
330331
return layerList;
331332
}
332333

@@ -609,6 +610,27 @@ QList<QDomElement> QgsProjectParser::projectLayerElements() const
609610
return layerElemList;
610611
}
611612

613+
QList<QDomElement> QgsProjectParser::legendGroupElements() const
614+
{
615+
QList<QDomElement> groupList;
616+
if ( !mXMLDoc )
617+
{
618+
return groupList;
619+
}
620+
621+
QDomElement legendElement = mXMLDoc->documentElement().firstChildElement( "legend" );
622+
if ( legendElement.isNull() )
623+
{
624+
return groupList;
625+
}
626+
627+
QDomNodeList groupNodeList = legendElement.elementsByTagName( "legendgroup" );
628+
for ( int i = 0; i < groupNodeList.size(); ++i )
629+
{
630+
groupList.push_back( groupNodeList.at( i ).toElement() );
631+
}
632+
}
633+
612634
QMap< QString, QDomElement > QgsProjectParser::projectLayerElementsById() const
613635
{
614636
QMap< QString, QDomElement > layerMap;

‎src/mapserver/qgsprojectparser.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ class QgsProjectParser: public QgsConfigParser
102102

103103
/**Get all layers of the project (ordered same as in the project file)*/
104104
QList<QDomElement> projectLayerElements() const;
105+
/**Returns all legend group elements*/
106+
QList<QDomElement> legendGroupElements() const;
105107
/**Get all layers of the project, accessible by layer id*/
106108
QMap< QString, QDomElement > projectLayerElementsById() const;
107109
/**Get all layers of the project, accessible by layer name*/

0 commit comments

Comments
 (0)
Please sign in to comment.