Skip to content

Commit 259290a

Browse files
committed
[Bugfix][Server] Display composer legend with auto update like the Desktop
QGIS Server was not able to display auto update legend in composer since 2.18.x. To fix it we need to deactivate *auto update* and to provide the the project layer tree.
1 parent 9f01039 commit 259290a

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

src/server/qgswmsprojectparser.cpp

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,8 +599,9 @@ QgsComposition* QgsWMSProjectParser::initComposition( const QString& composerTem
599599
#endif
600600
if ( legend->autoUpdateModel() )
601601
{
602+
legend->setAutoUpdateModel( false );
602603
model->setRootGroup( projectLayerTreeGroup() );
603-
legend->synchronizeWithModel();
604+
legend->updateLegend();
604605
}
605606
// if the legend has no map
606607
// we will load all layers
@@ -2461,6 +2462,41 @@ QgsLayerTreeGroup* QgsWMSProjectParser::projectLayerTreeGroup() const
24612462
return rootGroup;
24622463
}
24632464

2465+
/*const QDomDocument* projectDoc = mProjectParser->xmlDocument();
2466+
if ( projectDoc )
2467+
{
2468+
QDomElement qgisElem = projectDoc->documentElement();
2469+
if ( qgisElem.isNull() )
2470+
{
2471+
QDomElement layerTreeElem = qgisElem.firstChildElement( "layer-tree-group" );*/
2472+
if ( layerTreeElem.isNull() )
2473+
{
2474+
const QHash< QString, QDomElement > &projectLayerElements = mProjectParser->projectLayerElementsById();
2475+
QDomNodeList treeLayerNodeList = layerTreeElem.elementsByTagName( "layer-tree-layer" );
2476+
for ( int i = 0; i < treeLayerNodeList.size(); ++i )
2477+
{
2478+
QDomElement treeLayerElem = treeLayerNodeList.at( i ).toElement();
2479+
QString layerId = treeLayerElem.attribute( "id" );
2480+
QgsMapLayer * layer = QgsMapLayerRegistry::instance()->mapLayer( layerId );
2481+
if ( layer )
2482+
{
2483+
continue;
2484+
}
2485+
2486+
QHash< QString, QDomElement >::const_iterator layerElemIt = projectLayerElements.find( layerId );
2487+
if ( layerElemIt != projectLayerElements.constEnd() )
2488+
{
2489+
layer = mProjectParser->createLayerFromElement( layerElemIt.value(), true );
2490+
}
2491+
if ( layer )
2492+
{
2493+
QgsMapLayerRegistry::instance()->addMapLayer( layer );
2494+
}
2495+
}
2496+
}
2497+
/*}
2498+
}*/
2499+
24642500
return QgsLayerTreeGroup::readXML( layerTreeElem );
24652501
}
24662502

0 commit comments

Comments
 (0)