29#include "moc_qgstiledscenedataitemguiprovider.cpp"
33void QgsTiledSceneDataItemGuiProvider::populateContextMenu(
QgsDataItem *item, QMenu *menu,
const QList<QgsDataItem *> &selection,
QgsDataItemGuiContext context )
35 if ( QgsTiledSceneLayerItem *layerItem = qobject_cast<QgsTiledSceneLayerItem *>( item ) )
38 if ( sceneConnectionItems.size() == 1 )
40 QAction *actionEdit =
new QAction( tr(
"Edit Connection…" ), menu );
41 connect( actionEdit, &QAction::triggered,
this, [layerItem] { editConnection( layerItem ); } );
42 menu->addAction( actionEdit );
44 QAction *actionDuplicate =
new QAction( tr(
"Duplicate Connection" ), menu );
45 connect( actionDuplicate, &QAction::triggered,
this, [layerItem] { duplicateConnection( layerItem ); } );
46 menu->addAction( actionDuplicate );
49 QAction *actionDelete =
new QAction( sceneConnectionItems.size() > 1 ? tr(
"Remove Connections…" ) : tr(
"Remove Connection…" ), menu );
50 connect( actionDelete, &QAction::triggered,
this, [sceneConnectionItems, context] {
53 menu->addAction( actionDelete );
56 if ( QgsTiledSceneRootItem *rootItem = qobject_cast<QgsTiledSceneRootItem *>( item ) )
58 QAction *actionNewCesium =
new QAction( tr(
"New Cesium 3D Tiles Connection…" ), menu );
59 connect( actionNewCesium, &QAction::triggered,
this, [rootItem] { newConnection( rootItem,
"cesiumtiles" ); } );
60 menu->addAction( actionNewCesium );
62 QAction *actionNewQM =
new QAction( tr(
"New Quantized Mesh Connection…" ), menu );
63 connect( actionNewQM, &QAction::triggered,
this, [rootItem] { newConnection( rootItem,
"quantizedmesh" ); } );
64 menu->addAction( actionNewQM );
68 QAction *actionSave =
new QAction( tr(
"Save Connections…" ), menu );
69 connect( actionSave, &QAction::triggered,
this, [] { saveConnections(); } );
70 menu->addAction( actionSave );
72 QAction *actionLoadXyzTilesServers =
new QAction( tr(
"Load Connections…" ), menu );
73 connect( actionLoadXyzTilesServers, &QAction::triggered,
this, [rootItem] { loadConnections( rootItem ); } );
74 menu->addAction( actionLoadXyzTilesServers );
78void QgsTiledSceneDataItemGuiProvider::editConnection(
QgsDataItem *item )
83 QgsTiledSceneConnectionDialog dlg;
85 dlg.setConnection( item->
name(), uri );
99void QgsTiledSceneDataItemGuiProvider::duplicateConnection(
QgsDataItem *item )
101 const QString connectionName = item->
name();
103 const QStringList connections = QgsTiledSceneProviderConnection::sTreeConnectionTiledScene->items();
111void QgsTiledSceneDataItemGuiProvider::newConnection(
QgsDataItem *item, QString provider )
125void QgsTiledSceneDataItemGuiProvider::saveConnections()
131void QgsTiledSceneDataItemGuiProvider::loadConnections(
QgsDataItem *item )
133 const QString fileName = QFileDialog::getOpenFileName(
nullptr, tr(
"Load Connections" ), QDir::homePath(), tr(
"XML files (*.xml *.XML)" ) );
134 if ( fileName.isEmpty() )
140 if ( dlg.exec() == QDialog::Accepted )
static QgsApplication * instance()
Returns the singleton instance of the QgsApplication.
Encapsulates the context in which a QgsDataItem is shown within the application GUI.
static const QString uniqueName(const QString &name, const QStringList &connectionNames)
Check if connection with name exists in connectionNames list and then try to append a number to it to...
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.
static QList< T * > filteredItems(const QList< QgsDataItem * > &items)
Returns a filtered list of data items which match the template type.
A dialog for importing or exporting stored connections.
@ TiledScene
Tiled scene connection.
Represents connections to tiled scene data sources.
void remove(const QString &name) const override
Deletes the connection from the settings.
static Data decodedUri(const QString &uri)
Returns a connection uri decoded to a data structure.
static Data connection(const QString &name)
Returns connection details for the stored connection with the specified name.
static void addConnection(const QString &name, const Data &connection)
Stores a new connection, under the specified connection name.
static QString encodedUri(const Data &data)
Returns connection data encoded as a string.
Represents decoded data of a tiled scene connection.
QString provider
Provider key.