30void QgsVectorTileDataItemGuiProvider::populateContextMenu(
QgsDataItem *item, QMenu *menu,
const QList<QgsDataItem *> &selection,
QgsDataItemGuiContext context )
32 if ( QgsVectorTileLayerItem *layerItem = qobject_cast< QgsVectorTileLayerItem * >( item ) )
34 QAction *actionEdit =
new QAction( tr(
"Edit Connection…" ), menu );
35 connect( actionEdit, &QAction::triggered,
this, [layerItem] { editConnection( layerItem ); } );
36 menu->addAction( actionEdit );
38 const QList< QgsVectorTileLayerItem * > vtConnectionItems = QgsDataItem::filteredItems<QgsVectorTileLayerItem>( selection );
39 QAction *actionDelete =
new QAction( vtConnectionItems.size() > 1 ? tr(
"Remove Connections…" ) : tr(
"Remove Connection…" ), menu );
40 connect( actionDelete, &QAction::triggered,
this, [vtConnectionItems, context]
44 QgsVectorTileProviderConnection::deleteConnection( connectionName );
47 menu->addAction( actionDelete );
50 if ( QgsVectorTileRootItem *rootItem = qobject_cast< QgsVectorTileRootItem * >( item ) )
52 QAction *actionNew =
new QAction( tr(
"New Generic Connection…" ), menu );
53 connect( actionNew, &QAction::triggered,
this, [rootItem] { newConnection( rootItem ); } );
54 menu->addAction( actionNew );
56 QAction *actionNewArcGISConnection =
new QAction( tr(
"New ArcGIS Vector Tile Service Connection…" ), menu );
57 connect( actionNewArcGISConnection, &QAction::triggered,
this, [rootItem] { newArcGISConnection( rootItem ); } );
58 menu->addAction( actionNewArcGISConnection );
62 QAction *actionSaveXyzTilesServers =
new QAction( tr(
"Save Connections…" ), menu );
63 connect( actionSaveXyzTilesServers, &QAction::triggered,
this, [] { saveXyzTilesServers(); } );
64 menu->addAction( actionSaveXyzTilesServers );
66 QAction *actionLoadXyzTilesServers =
new QAction( tr(
"Load Connections…" ), menu );
67 connect( actionLoadXyzTilesServers, &QAction::triggered,
this, [rootItem] { loadXyzTilesServers( rootItem ); } );
68 menu->addAction( actionLoadXyzTilesServers );
72void QgsVectorTileDataItemGuiProvider::editConnection(
QgsDataItem *item )
74 const QgsVectorTileProviderConnection::Data connection = QgsVectorTileProviderConnection::connection( item->
name() );
75 const QString uri = QgsVectorTileProviderConnection::encodedUri( connection );
77 switch ( connection.serviceType )
79 case QgsVectorTileProviderConnection::Generic:
81 QgsVectorTileConnectionDialog dlg;
83 dlg.setConnection( item->
name(), uri );
87 QgsVectorTileProviderConnection::deleteConnection( item->
name() );
88 const QgsVectorTileProviderConnection::Data conn = QgsVectorTileProviderConnection::decodedUri( dlg.connectionUri() );
89 QgsVectorTileProviderConnection::addConnection( dlg.connectionName(), conn );
93 case QgsVectorTileProviderConnection::ArcgisVectorTileService:
95 QgsArcgisVectorTileConnectionDialog dlg;
97 dlg.setConnection( item->
name(), uri );
101 QgsVectorTileProviderConnection::deleteConnection( item->
name() );
102 const QgsVectorTileProviderConnection::Data conn = QgsVectorTileProviderConnection::decodedUri( dlg.connectionUri() );
103 QgsVectorTileProviderConnection::addConnection( dlg.connectionName(), conn );
111void QgsVectorTileDataItemGuiProvider::newConnection(
QgsDataItem *item )
113 QgsVectorTileConnectionDialog dlg;
117 const QgsVectorTileProviderConnection::Data conn = QgsVectorTileProviderConnection::decodedUri( dlg.connectionUri() );
118 QgsVectorTileProviderConnection::addConnection( dlg.connectionName(), conn );
123void QgsVectorTileDataItemGuiProvider::newArcGISConnection(
QgsDataItem *item )
125 QgsArcgisVectorTileConnectionDialog dlg;
129 const QgsVectorTileProviderConnection::Data conn = QgsVectorTileProviderConnection::decodedUri( dlg.connectionUri() );
130 QgsVectorTileProviderConnection::addConnection( dlg.connectionName(), conn );
135void QgsVectorTileDataItemGuiProvider::saveXyzTilesServers()
141void QgsVectorTileDataItemGuiProvider::loadXyzTilesServers(
QgsDataItem *item )
143 const QString fileName = QFileDialog::getOpenFileName(
nullptr, tr(
"Load Connections" ), QDir::homePath(),
144 tr(
"XML files (*.xml *.XML)" ) );
145 if ( fileName.isEmpty() )
151 if ( dlg.exec() == QDialog::Accepted )
Encapsulates the context in which a QgsDataItem is shown within the application GUI.
static void deleteConnections(const QList< T * > &items, const std::function< void(const QString &) > &deleteConnection, QgsDataItemGuiContext context)
Handles deletion of a list of connection items.
Base class for all items in the model.
QString name() const
Returns the name of the item (the displayed text for the item).
virtual void refreshConnections(const QString &providerKey=QString())
Causes a data item provider to refresh all registered connections.
QgsDataItem * parent() const
Gets item parent.