@@ -154,9 +154,10 @@ QgsGeoPackageConnectionItem::QgsGeoPackageConnectionItem( QgsDataItem *parent, Q
154
154
mCapabilities |= Collapse;
155
155
}
156
156
157
- QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren ()
157
+ QList<QgsGeoPackageLayerInfo *> QgsGeoPackageConnectionItem::subLayers ( const QString &path ) const
158
158
{
159
- QVector<QgsDataItem *> children;
159
+
160
+ QList<QgsGeoPackageLayerInfo *> children;
160
161
161
162
// Vector layers
162
163
QgsVectorLayer layer ( mPath , QStringLiteral ( " ogr_tmp" ), QStringLiteral ( " ogr" ) );
@@ -199,8 +200,7 @@ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren()
199
200
if ( i == 0 && values.size () > 1 )
200
201
{
201
202
uri = QStringLiteral ( " %1|layerid=%2|layername=%3" ).arg ( mPath , layerId, name );
202
- QgsGeoPackageVectorLayerItem *item = new QgsGeoPackageVectorLayerItem ( this , name, mPath , uri, QgsLayerItem::LayerType::TableLayer );
203
- children.append ( item );
203
+ children.append ( new QgsGeoPackageLayerInfo ( mPath , uri, name, QgsLayerItem::LayerType::TableLayer ) );
204
204
}
205
205
if ( layerType != QgsLayerItem::LayerType::NoType )
206
206
{
@@ -218,9 +218,8 @@ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren()
218
218
{
219
219
uri = QStringLiteral ( " %1|layerid=%2" ).arg ( mPath , layerId );
220
220
}
221
- QgsGeoPackageVectorLayerItem *item = new QgsGeoPackageVectorLayerItem ( this , name, mPath , uri, layerType );
222
221
QgsDebugMsgLevel ( QStringLiteral ( " Adding GeoPackage Vector item %1 %2 %3" ).arg ( name, uri, geometryType ), 3 );
223
- children.append ( item );
222
+ children.append ( new QgsGeoPackageLayerInfo ( mPath , uri, name, layerType ) );
224
223
}
225
224
}
226
225
else
@@ -240,8 +239,7 @@ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren()
240
239
QStringList pieces = uri.split ( ' :' );
241
240
QString name = pieces.value ( pieces.length () - 1 );
242
241
QgsDebugMsgLevel ( QStringLiteral ( " Adding GeoPackage Raster item %1 %2 %3" ).arg ( name, uri ), 3 );
243
- QgsGeoPackageRasterLayerItem *item = new QgsGeoPackageRasterLayerItem ( this , name, mPath , uri );
244
- children.append ( item );
242
+ children.append ( new QgsGeoPackageLayerInfo ( mPath , uri, name, QgsLayerItem::LayerType::Raster ) );
245
243
}
246
244
}
247
245
else if ( rlayer.isValid ( ) )
@@ -275,12 +273,29 @@ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren()
275
273
}
276
274
277
275
QgsDebugMsgLevel ( QStringLiteral ( " Adding GeoPackage Raster item %1 %2 %3" ).arg ( name, mPath ), 3 );
278
- QgsGeoPackageRasterLayerItem *item = new QgsGeoPackageRasterLayerItem ( this , name, mPath , uri );
279
- children.append ( item );
276
+ children.append ( new QgsGeoPackageLayerInfo ( mPath , uri, name, QgsLayerItem::LayerType::Raster ) );
280
277
}
281
278
}
282
279
return children;
280
+ }
283
281
282
+ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren ()
283
+ {
284
+ QVector<QgsDataItem *> children;
285
+ QList<QgsGeoPackageLayerInfo *> layers = subLayers ( mPath );
286
+ for ( const QgsGeoPackageLayerInfo *info : qgsAsConst ( layers ) )
287
+ {
288
+ if ( info->type () == QgsLayerItem::LayerType::Raster )
289
+ {
290
+ children.append ( new QgsGeoPackageRasterLayerItem ( this , info->name (), info->path (), info->uri () ) );
291
+ }
292
+ else
293
+ {
294
+ children.append ( new QgsGeoPackageVectorLayerItem ( this , info->name (), info->path (), info->uri (), info->type ( ) ) );
295
+ }
296
+ }
297
+ qDeleteAll ( layers );
298
+ return children;
284
299
}
285
300
286
301
bool QgsGeoPackageConnectionItem::equal ( const QgsDataItem *other )
0 commit comments