Skip to content

Commit f499f49

Browse files
committedMar 24, 2023
Expose "Change Data Source" option for file-based vector tile layers
1 parent 41b9a4d commit f499f49

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed
 

‎src/app/qgsapplayertreeviewmenuprovider.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@
5353
#include "qgsmeshlayer.h"
5454
#include "qgsmapcanvasutils.h"
5555
#include "qgsmaplayeraction.h"
56+
#include "qgsvectortilelayer.h"
57+
#include "qgsvectortiledataprovider.h"
58+
#include "qgsproviderregistry.h"
59+
#include "qgsprovidermetadata.h"
5660

5761
QgsAppLayerTreeViewMenuProvider::QgsAppLayerTreeViewMenuProvider( QgsLayerTreeView *view, QgsMapCanvas *canvas )
5862
: mView( view )
@@ -157,6 +161,7 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
157161
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
158162
QgsPointCloudLayer *pcLayer = qobject_cast<QgsPointCloudLayer * >( layer );
159163
QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer * >( layer );
164+
QgsVectorTileLayer *vectorTileLayer = qobject_cast<QgsVectorTileLayer * >( layer );
160165

161166
if ( layer && layer->isSpatial() )
162167
{
@@ -381,8 +386,16 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
381386
menu->addAction( tr( "&Filter…" ), QgisApp::instance(), qOverload<>( &QgisApp::layerSubsetString ) );
382387
}
383388

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 )
386399
{
387400

388401
QAction *a = new QAction( layer->isValid() ? tr( "C&hange Data Source…" ) : tr( "Repair Data Source…" ), menu );

0 commit comments

Comments
 (0)
Please sign in to comment.