Don't prompt multiple times to add vector/raster sublayers from a gpkg

dragged from the browser

Instead just prompt once with a unified dialog showing all sublayers
This commit is contained in:
Nyall Dawson 2021-07-19 12:57:26 +10:00
parent 2ac66726cb
commit cc17c9049d
3 changed files with 13 additions and 17 deletions

View File

@ -2012,7 +2012,11 @@ void QgisApp::handleDropUriList( const QgsMimeDataUtils::UriList &lst )
QString uri = crsAndFormatAdjustedLayerUri( u.uri, u.supportedCrs, u.supportedFormats );
if ( u.layerType == QLatin1String( "vector" ) )
if ( u.layerType == QLatin1String( "collection" ) )
{
openLayer( uri, true );
}
else if ( u.layerType == QLatin1String( "vector" ) )
{
addVectorLayer( uri, u.name, u.providerKey );
}

View File

@ -399,12 +399,8 @@ bool QgsGeoPackageCollectionItem::hasDragEnabled() const
QgsMimeDataUtils::UriList QgsGeoPackageCollectionItem::mimeUris() const
{
QgsMimeDataUtils::Uri vectorUri;
vectorUri.providerKey = QStringLiteral( "ogr" );
vectorUri.uri = path().replace( QLatin1String( "gpkg:/" ), QString() );
vectorUri.layerType = QStringLiteral( "vector" );
QgsMimeDataUtils::Uri rasterUri { vectorUri };
rasterUri.layerType = QStringLiteral( "raster" );
rasterUri.providerKey = QStringLiteral( "gdal" );
return { vectorUri, rasterUri };
QgsMimeDataUtils::Uri collectionUri;
collectionUri.uri = path().replace( QLatin1String( "gpkg:/" ), QString() );
collectionUri.layerType = QStringLiteral( "collection" );
return { collectionUri };
}

View File

@ -457,14 +457,10 @@ bool QgsOgrDataCollectionItem::hasDragEnabled() const
QgsMimeDataUtils::UriList QgsOgrDataCollectionItem::mimeUris() const
{
QgsMimeDataUtils::Uri vectorUri;
vectorUri.providerKey = QStringLiteral( "ogr" );
vectorUri.uri = path();
vectorUri.layerType = QStringLiteral( "vector" );
QgsMimeDataUtils::Uri rasterUri { vectorUri };
rasterUri.layerType = QStringLiteral( "raster" );
rasterUri.providerKey = QStringLiteral( "gdal" );
return { vectorUri, rasterUri };
QgsMimeDataUtils::Uri collectionUri;
collectionUri.uri = path();
collectionUri.layerType = QStringLiteral( "collection" );
return { collectionUri };
}
QgsAbstractDatabaseProviderConnection *QgsOgrDataCollectionItem::databaseConnection() const