Skip to content

Commit 904cd6f

Browse files
authoredAug 14, 2017
Merge pull request #5018 from boundlessgeo/gpkg-show-tables
Browser tree: also show geopackage geometryless layers as tables
2 parents b26e681 + 11f1791 commit 904cd6f

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed
 

‎src/providers/ogr/qgsgeopackagedataitems.cpp

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -154,27 +154,28 @@ QVector<QgsDataItem *> QgsGeoPackageConnectionItem::createChildren()
154154
QString geometryType = pieces[3];
155155
QgsLayerItem::LayerType layerType;
156156
layerType = layerTypeFromDb( geometryType );
157-
if ( layerType != QgsLayerItem::LayerType::NoType )
157+
if ( geometryType.contains( QStringLiteral( "Collection" ), Qt::CaseInsensitive ) )
158158
{
159-
if ( geometryType.contains( QStringLiteral( "Collection" ), Qt::CaseInsensitive ) )
159+
QgsDebugMsgLevel( QStringLiteral( "Layer %1 is a geometry collection: skipping %2" ).arg( name, mPath ), 3 );
160+
}
161+
else
162+
{
163+
// example URI: '/path/gdal_sample_v1.2_no_extensions.gpkg|layerid=7|geometrytype=Point'
164+
QString uri;
165+
// We do not need to add a geometry type for table layers
166+
if ( layerType != QgsLayerItem::LayerType::TableLayer )
160167
{
161-
QgsDebugMsgLevel( QStringLiteral( "Layer %1 is a geometry collection: skipping %2" ).arg( name, mPath ), 3 );
168+
uri = QStringLiteral( "%1|layerid=%2|geometrytype=%3" ).arg( mPath, layerId, geometryType );
162169
}
163170
else
164171
{
165-
// example URI: '/path/gdal_sample_v1.2_no_extensions.gpkg|layerid=7|geometrytype=Point'
166-
QString uri = QStringLiteral( "%1|layerid=%2|geometrytype=%3" ).arg( mPath, layerId, geometryType );
167-
// TODO?: not sure, but if it's a collection, an expandable node would be better?
168-
QgsGeoPackageVectorLayerItem *item = new QgsGeoPackageVectorLayerItem( this, name, mPath, uri, layerType );
169-
QgsDebugMsgLevel( QStringLiteral( "Adding GPKG Vector item %1 %2 %3" ).arg( name, uri, geometryType ), 3 );
170-
children.append( item );
172+
uri = QStringLiteral( "%1|layerid=%2" ).arg( mPath, layerId );
171173
}
174+
// TODO?: not sure, but if it's a collection, an expandable node would be better?
175+
QgsGeoPackageVectorLayerItem *item = new QgsGeoPackageVectorLayerItem( this, name, mPath, uri, layerType );
176+
QgsDebugMsgLevel( QStringLiteral( "Adding GPKG Vector item %1 %2 %3" ).arg( name, uri, geometryType ), 3 );
177+
children.append( item );
172178
}
173-
else
174-
{
175-
QgsDebugMsgLevel( QStringLiteral( "Layer type is not a supported GeoPackage Vector layer %1" ).arg( mPath ), 3 );
176-
}
177-
178179
}
179180
}
180181
// Raster layers
@@ -235,16 +236,12 @@ QgsLayerItem::LayerType QgsGeoPackageConnectionItem::layerTypeFromDb( const QStr
235236
{
236237
return QgsLayerItem::LayerType::Vector;
237238
}
238-
else if ( geometryType.contains( QStringLiteral( "Table" ), Qt::CaseInsensitive ) )
239-
{
240-
return QgsLayerItem::LayerType::Table;
241-
}
242239
// To be moved in a parent class that would also work for gdal and rasters
243240
else if ( geometryType.contains( QStringLiteral( "Raster" ), Qt::CaseInsensitive ) )
244241
{
245242
return QgsLayerItem::LayerType::Raster;
246243
}
247-
return QgsLayerItem::LayerType::NoType;
244+
return QgsLayerItem::LayerType::TableLayer;
248245
}
249246

250247
void QgsGeoPackageConnectionItem::deleteConnection()

0 commit comments

Comments
 (0)
Please sign in to comment.