Skip to content

Commit ada6050

Browse files
committedOct 28, 2016
Fix listing of WMTS layers in browser (fixes #15350)
(cherry picked from commit 29d2bef)
1 parent 8be3b01 commit ada6050

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed
 

‎src/providers/wms/qgswmsdataitems.cpp

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,46 +134,61 @@ QVector<QgsDataItem*> QgsWMSConnectionItem::createChildren()
134134
QgsDataItem *layerItem = l.styles.size() == 1 ? this : new QgsDataCollectionItem( this, title, mPath + '/' + l.identifier );
135135
if ( layerItem != this )
136136
{
137+
layerItem->setCapabilities( layerItem->capabilities2() & ~QgsDataItem::Fertile );
138+
layerItem->setState( QgsDataItem::Populated );
137139
layerItem->setToolTip( title );
138-
addChildItem( layerItem );
140+
children << layerItem;
139141
}
140142

141143
Q_FOREACH ( const QgsWmtsStyle &style, l.styles )
142144
{
143145
QString styleName = style.title.isEmpty() ? style.identifier : style.title;
144146
if ( layerItem == this )
145-
styleName.prepend( title + " - " );
147+
styleName = title; // just one style so no need to display it
146148

147149
QgsDataItem *styleItem = l.setLinks.size() == 1 ? layerItem : new QgsDataCollectionItem( layerItem, styleName, layerItem->path() + '/' + style.identifier );
148150
if ( styleItem != layerItem )
149151
{
152+
styleItem->setCapabilities( styleItem->capabilities2() & ~QgsDataItem::Fertile );
153+
styleItem->setState( QgsDataItem::Populated );
150154
styleItem->setToolTip( styleName );
151-
layerItem->addChildItem( styleItem );
155+
if ( layerItem == this )
156+
children << styleItem;
157+
else
158+
layerItem->addChildItem( styleItem );
152159
}
153160

154161
Q_FOREACH ( const QgsWmtsTileMatrixSetLink &setLink, l.setLinks )
155162
{
156163
QString linkName = setLink.tileMatrixSet;
157164
if ( styleItem == layerItem )
158-
linkName.prepend( styleName + " - " );
165+
linkName = styleName; // just one link so no need to display it
159166

160167
QgsDataItem *linkItem = l.formats.size() == 1 ? styleItem : new QgsDataCollectionItem( styleItem, linkName, styleItem->path() + '/' + setLink.tileMatrixSet );
161168
if ( linkItem != styleItem )
162169
{
170+
linkItem->setCapabilities( linkItem->capabilities2() & ~QgsDataItem::Fertile );
171+
linkItem->setState( QgsDataItem::Populated );
163172
linkItem->setToolTip( linkName );
164-
styleItem->addChildItem( linkItem );
173+
if ( styleItem == this )
174+
children << linkItem;
175+
else
176+
styleItem->addChildItem( linkItem );
165177
}
166178

167179
Q_FOREACH ( const QString& format, l.formats )
168180
{
169181
QString name = format;
170182
if ( linkItem == styleItem )
171-
name.prepend( linkName + " - " );
183+
name = linkName; // just one format so no need to display it
172184

173-
QgsDataItem *layerItem = new QgsWMTSLayerItem( linkItem, name, linkItem->path() + '/' + name, uri,
185+
QgsDataItem *tileLayerItem = new QgsWMTSLayerItem( linkItem, name, linkItem->path() + '/' + name, uri,
174186
l.identifier, format, style.identifier, setLink.tileMatrixSet, tileMatrixSets[ setLink.tileMatrixSet ].crs, title );
175-
layerItem->setToolTip( name );
176-
linkItem->addChildItem( layerItem );
187+
tileLayerItem->setToolTip( name );
188+
if ( linkItem == this )
189+
children << tileLayerItem;
190+
else
191+
linkItem->addChildItem( tileLayerItem );
177192
}
178193
}
179194
}

0 commit comments

Comments
 (0)