|
53 | 53 | #include "qgsmeshlayer.h"
|
54 | 54 | #include "qgsmapcanvasutils.h"
|
55 | 55 | #include "qgsmaplayeraction.h"
|
| 56 | +#include "qgsvectortilelayer.h" |
| 57 | +#include "qgsvectortiledataprovider.h" |
| 58 | +#include "qgsproviderregistry.h" |
| 59 | +#include "qgsprovidermetadata.h" |
56 | 60 |
|
57 | 61 | QgsAppLayerTreeViewMenuProvider::QgsAppLayerTreeViewMenuProvider( QgsLayerTreeView *view, QgsMapCanvas *canvas )
|
58 | 62 | : mView( view )
|
@@ -157,6 +161,7 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
|
157 | 161 | QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
|
158 | 162 | QgsPointCloudLayer *pcLayer = qobject_cast<QgsPointCloudLayer * >( layer );
|
159 | 163 | QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer * >( layer );
|
| 164 | + QgsVectorTileLayer *vectorTileLayer = qobject_cast<QgsVectorTileLayer * >( layer ); |
160 | 165 |
|
161 | 166 | if ( layer && layer->isSpatial() )
|
162 | 167 | {
|
@@ -381,8 +386,16 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
|
381 | 386 | menu->addAction( tr( "&Filter…" ), QgisApp::instance(), qOverload<>( &QgisApp::layerSubsetString ) );
|
382 | 387 | }
|
383 | 388 |
|
384 |
| - // change data source is only supported for vectors, rasters, point clouds, mesh |
385 |
| - if ( vlayer || rlayer || pcLayer || meshLayer ) |
| 389 | + // change data source is only supported for vectors, rasters, point clouds, mesh, some vector tile layers |
| 390 | + bool supportsChangeDataSource = vlayer || rlayer || pcLayer || meshLayer; |
| 391 | + if ( vectorTileLayer ) |
| 392 | + { |
| 393 | + if ( const QgsProviderMetadata *metadata = QgsProviderRegistry::instance()->providerMetadata( vectorTileLayer->providerType() ) ) |
| 394 | + { |
| 395 | + supportsChangeDataSource = metadata->providerCapabilities() & QgsProviderMetadata::FileBasedUris; |
| 396 | + } |
| 397 | + } |
| 398 | + if ( supportsChangeDataSource ) |
386 | 399 | {
|
387 | 400 |
|
388 | 401 | QAction *a = new QAction( layer->isValid() ? tr( "C&hange Data Source…" ) : tr( "Repair Data Source…" ), menu );
|
|
0 commit comments