Skip to content

Commit

Permalink
Use standard data provider metadata createProvider methods for most
Browse files Browse the repository at this point in the history
vector tile data providers

The exception is QgsArcGisVectorTileServiceDataProvider - that requires
a bit of fiddly refactoring before it would be possible
  • Loading branch information
nyalldawson committed Mar 22, 2023
1 parent fa947ea commit d239e39
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 6 deletions.
5 changes: 5 additions & 0 deletions src/core/vectortile/qgsmbtilesvectortiledataprovider.cpp
Expand Up @@ -153,6 +153,11 @@ QgsMbTilesVectorTileDataProviderMetadata::QgsMbTilesVectorTileDataProviderMetada
{
}

QgsMbTilesVectorTileDataProvider *QgsMbTilesVectorTileDataProviderMetadata::createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags )
{
return new QgsMbTilesVectorTileDataProvider( uri, options, flags );
}

QIcon QgsMbTilesVectorTileDataProviderMetadata::icon() const
{
return QgsApplication::getThemeIcon( QStringLiteral( "mIconVectorTileLayer.svg" ) );
Expand Down
1 change: 1 addition & 0 deletions src/core/vectortile/qgsmbtilesvectortiledataprovider.h
Expand Up @@ -60,6 +60,7 @@ class QgsMbTilesVectorTileDataProviderMetadata : public QgsProviderMetadata
Q_OBJECT
public:
QgsMbTilesVectorTileDataProviderMetadata();
QgsMbTilesVectorTileDataProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) override;
QIcon icon() const override;
ProviderCapabilities providerCapabilities() const override;
QVariantMap decodeUri( const QString &uri ) const override;
Expand Down
12 changes: 6 additions & 6 deletions src/core/vectortile/qgsvectortilelayer.cpp
Expand Up @@ -38,10 +38,7 @@
#include "qgsthreadingutils.h"
#include "qgsproviderregistry.h"
#include "qgsvectortiledataprovider.h"
#include "qgsmbtilesvectortiledataprovider.h"
#include "qgsarcgisvectortileservicedataprovider.h"
#include "qgsxyzvectortiledataprovider.h"
#include "qgsvtpkvectortiledataprovider.h"

#include <QUrl>
#include <QUrlQuery>
Expand Down Expand Up @@ -114,7 +111,7 @@ bool QgsVectorTileLayer::loadDataSource()
mMatrixSet = QgsVectorTileMatrixSet::fromWebMercator( zMin, zMax );
setExtent( QgsRectangle( -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892 ) );

mDataProvider = std::make_unique< QgsXyzVectorTileDataProvider >( mDataSource, providerOptions, flags );
mDataProvider.reset( qobject_cast<QgsVectorTileDataProvider *>( QgsProviderRegistry::instance()->createProvider( QStringLiteral( "xyzvectortiles" ), mDataSource, providerOptions, flags ) ) );
}
else if ( mSourceType == QLatin1String( "mbtiles" ) )
{
Expand Down Expand Up @@ -149,7 +146,7 @@ bool QgsVectorTileLayer::loadDataSource()
r = ct.transformBoundingBox( r );
setExtent( r );

mDataProvider = std::make_unique< QgsMbTilesVectorTileDataProvider >( mDataSource, providerOptions, flags );
mDataProvider.reset( qobject_cast<QgsVectorTileDataProvider *>( QgsProviderRegistry::instance()->createProvider( QStringLiteral( "mbtilesvectortiles" ), mDataSource, providerOptions, flags ) ) );
}
else if ( mSourceType == QLatin1String( "vtpk" ) )
{
Expand All @@ -172,7 +169,7 @@ bool QgsVectorTileLayer::loadDataSource()
setCrs( mMatrixSet.crs() );
setExtent( reader.extent( transformContext() ) );

mDataProvider = std::make_unique< QgsVtpkVectorTileDataProvider >( mDataSource, providerOptions, flags );
mDataProvider.reset( qobject_cast<QgsVectorTileDataProvider *>( QgsProviderRegistry::instance()->createProvider( QStringLiteral( "vtpkvectortiles" ), mDataSource, providerOptions, flags ) ) );
}
else
{
Expand Down Expand Up @@ -339,6 +336,9 @@ bool QgsVectorTileLayer::setupArcgisVectorTileServiceConnection( const QString &

const QgsDataProvider::ProviderOptions providerOptions { mTransformContext };
const QgsDataProvider::ReadFlags flags;

// TODO -- call QgsProviderRegistry::instance()->createProvider instead, but that first requires moving above logic for
// determination of the service URI to the data provider
mDataProvider = std::make_unique< QgsArcGisVectorTileServiceDataProvider >( mDataSource, sourcePath, providerOptions, flags );

return true;
Expand Down
5 changes: 5 additions & 0 deletions src/core/vectortile/qgsvtpkvectortiledataprovider.cpp
Expand Up @@ -137,6 +137,11 @@ QgsVtpkVectorTileDataProviderMetadata::QgsVtpkVectorTileDataProviderMetadata()
{
}

QgsVtpkVectorTileDataProvider *QgsVtpkVectorTileDataProviderMetadata::createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags )
{
return new QgsVtpkVectorTileDataProvider( uri, options, flags );
}

QIcon QgsVtpkVectorTileDataProviderMetadata::icon() const
{
return QgsApplication::getThemeIcon( QStringLiteral( "mIconVectorTileLayer.svg" ) );
Expand Down
1 change: 1 addition & 0 deletions src/core/vectortile/qgsvtpkvectortiledataprovider.h
Expand Up @@ -61,6 +61,7 @@ class QgsVtpkVectorTileDataProviderMetadata : public QgsProviderMetadata
Q_OBJECT
public:
QgsVtpkVectorTileDataProviderMetadata();
QgsVtpkVectorTileDataProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) override;
QIcon icon() const override;
ProviderCapabilities providerCapabilities() const override;
QVariantMap decodeUri( const QString &uri ) const override;
Expand Down
5 changes: 5 additions & 0 deletions src/core/vectortile/qgsxyzvectortiledataprovider.cpp
Expand Up @@ -193,6 +193,11 @@ QgsXyzVectorTileDataProviderMetadata::QgsXyzVectorTileDataProviderMetadata()
{
}

QgsXyzVectorTileDataProvider *QgsXyzVectorTileDataProviderMetadata::createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags )
{
return new QgsXyzVectorTileDataProvider( uri, options, flags );
}

QIcon QgsXyzVectorTileDataProviderMetadata::icon() const
{
return QgsApplication::getThemeIcon( QStringLiteral( "mIconVectorTileLayer.svg" ) );
Expand Down
1 change: 1 addition & 0 deletions src/core/vectortile/qgsxyzvectortiledataprovider.h
Expand Up @@ -70,6 +70,7 @@ class QgsXyzVectorTileDataProviderMetadata : public QgsProviderMetadata
Q_OBJECT
public:
QgsXyzVectorTileDataProviderMetadata();
QgsXyzVectorTileDataProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) override;
QIcon icon() const override;
ProviderCapabilities providerCapabilities() const override;
QVariantMap decodeUri( const QString &uri ) const override;
Expand Down

0 comments on commit d239e39

Please sign in to comment.