Skip to content

Commit 29d2bef

Browse files
committed
Fix listing of WMTS layers in browser (fixes #15350)
1 parent 3654d50 commit 29d2bef

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
@@ -135,46 +135,61 @@ QVector<QgsDataItem*> QgsWMSConnectionItem::createChildren()
135135
QgsDataItem *layerItem = l.styles.size() == 1 ? this : new QgsDataCollectionItem( this, title, mPath + '/' + l.identifier );
136136
if ( layerItem != this )
137137
{
138+
layerItem->setCapabilities( layerItem->capabilities2() & ~QgsDataItem::Fertile );
139+
layerItem->setState( QgsDataItem::Populated );
138140
layerItem->setToolTip( title );
139-
addChildItem( layerItem );
141+
children << layerItem;
140142
}
141143

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

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

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

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

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

174-
QgsDataItem *layerItem = new QgsWMTSLayerItem( linkItem, name, linkItem->path() + '/' + name, uri,
186+
QgsDataItem *tileLayerItem = new QgsWMTSLayerItem( linkItem, name, linkItem->path() + '/' + name, uri,
175187
l.identifier, format, style.identifier, setLink.tileMatrixSet, tileMatrixSets[ setLink.tileMatrixSet ].crs, title );
176-
layerItem->setToolTip( name );
177-
linkItem->addChildItem( layerItem );
188+
tileLayerItem->setToolTip( name );
189+
if ( linkItem == this )
190+
children << tileLayerItem;
191+
else
192+
linkItem->addChildItem( tileLayerItem );
178193
}
179194
}
180195
}

0 commit comments

Comments
 (0)