19#include "moc_qgstiledscenesourceselect.cpp" 
   40  setWindowTitle( tr( 
"Add Scene Layer" ) );
 
   42  mRadioSourceService->setChecked( 
true );
 
   43  mStackedWidget->setCurrentIndex( 1 );
 
   45  connect( mRadioSourceFile, &QRadioButton::toggled, 
this, [
this] {
 
   46    mStackedWidget->setCurrentIndex( 0 );
 
   48    emit enableButtons( !mFileWidget->filePath().isEmpty() );
 
   50  connect( mRadioSourceService, &QRadioButton::toggled, 
this, [
this] {
 
   51    mStackedWidget->setCurrentIndex( 1 );
 
   53    emit enableButtons( !cmbConnections->currentText().isEmpty() );
 
   56  btnNew->setPopupMode( QToolButton::InstantPopup );
 
   57  QMenu *newMenu = 
new QMenu( btnNew );
 
   59  QAction *actionNew = 
new QAction( tr( 
"New Cesium 3D Tiles Connection…" ), 
this );
 
   60  connect( actionNew, &QAction::triggered, 
this, [
this]() { newConnection( 
"cesiumtiles" ); } );
 
   61  newMenu->addAction( actionNew );
 
   63  actionNew = 
new QAction( tr( 
"New Quantized Mesh Connection…" ), 
this );
 
   64  connect( actionNew, &QAction::triggered, 
this, [
this]() { newConnection( 
"quantizedmesh" ); } );
 
   65  newMenu->addAction( actionNew );
 
   67  btnNew->setMenu( newMenu );
 
   69  connect( btnEdit, &QToolButton::clicked, 
this, &QgsTiledSceneSourceSelect::btnEdit_clicked );
 
   70  connect( btnDelete, &QToolButton::clicked, 
this, &QgsTiledSceneSourceSelect::btnDelete_clicked );
 
   71  connect( btnSave, &QToolButton::clicked, 
this, &QgsTiledSceneSourceSelect::btnSave_clicked );
 
   72  connect( btnLoad, &QToolButton::clicked, 
this, &QgsTiledSceneSourceSelect::btnLoad_clicked );
 
   73  connect( cmbConnections, &QComboBox::currentTextChanged, 
this, &QgsTiledSceneSourceSelect::cmbConnections_currentTextChanged );
 
   74  setupButtons( buttonBox );
 
   75  connect( buttonBox, &QDialogButtonBox::helpRequested, 
this, &QgsTiledSceneSourceSelect::showHelp );
 
   77  populateConnectionList();
 
   79  mFileWidget->setDialogTitle( tr( 
"Open Scene Dataset" ) );
 
   82  mFileWidget->setOptions( QFileDialog::HideNameFilterDetails );
 
   84    emit enableButtons( !path.isEmpty() );
 
   88void QgsTiledSceneSourceSelect::btnEdit_clicked()
 
   92  const QString provider = connection.
provider;
 
   94  QgsTiledSceneConnectionDialog nc( 
this );
 
   95  nc.setConnection( cmbConnections->currentText(), uri );
 
  102    populateConnectionList();
 
  103    emit connectionsChanged();
 
  107void QgsTiledSceneSourceSelect::btnDelete_clicked()
 
  109  const QString msg = tr( 
"Are you sure you want to remove the %1 connection and all associated settings?" )
 
  110                        .arg( cmbConnections->currentText() );
 
  111  if ( QMessageBox::Yes != QMessageBox::question( 
this, tr( 
"Confirm Delete" ), msg, QMessageBox::Yes | QMessageBox::No ) )
 
  116  populateConnectionList();
 
  117  emit connectionsChanged();
 
  120void QgsTiledSceneSourceSelect::btnSave_clicked()
 
  126void QgsTiledSceneSourceSelect::btnLoad_clicked()
 
  128  const QString fileName = QFileDialog::getOpenFileName( 
this, tr( 
"Load Connections" ), QDir::homePath(), tr( 
"XML files (*.xml *.XML)" ) );
 
  129  if ( fileName.isEmpty() )
 
  136  populateConnectionList();
 
  139void QgsTiledSceneSourceSelect::addButtonClicked()
 
  141  if ( mRadioSourceService->isChecked() )
 
  147  else if ( mRadioSourceFile->isChecked() )
 
  149    const QString filePath = mFileWidget->filePath();
 
  156        providerKey = details.metadata()->key();
 
  161    parts.insert( QStringLiteral( 
"path" ), filePath );
 
  168void QgsTiledSceneSourceSelect::newConnection( QString provider )
 
  170  QgsTiledSceneConnectionDialog nc( 
this );
 
  177    populateConnectionList();
 
  179    setConnectionListPosition();
 
  180    emit connectionsChanged();
 
  185void QgsTiledSceneSourceSelect::populateConnectionList()
 
  187  cmbConnections->blockSignals( 
true );
 
  188  cmbConnections->clear();
 
  190  cmbConnections->blockSignals( 
false );
 
  192  btnEdit->setDisabled( cmbConnections->count() == 0 );
 
  193  btnDelete->setDisabled( cmbConnections->count() == 0 );
 
  194  btnSave->setDisabled( cmbConnections->count() == 0 );
 
  195  cmbConnections->setDisabled( cmbConnections->count() == 0 );
 
  197  setConnectionListPosition();
 
  200void QgsTiledSceneSourceSelect::setConnectionListPosition()
 
  204  cmbConnections->setCurrentIndex( cmbConnections->findText( toSelect ) );
 
  206  if ( cmbConnections->currentIndex() < 0 )
 
  208    if ( toSelect.isNull() )
 
  209      cmbConnections->setCurrentIndex( 0 );
 
  211      cmbConnections->setCurrentIndex( cmbConnections->count() - 1 );
 
  214  emit enableButtons( !cmbConnections->currentText().isEmpty() );
 
  217void QgsTiledSceneSourceSelect::cmbConnections_currentTextChanged( 
const QString &text )
 
  220  emit enableButtons( !text.isEmpty() );
 
  223void QgsTiledSceneSourceSelect::showHelp()
 
@ TiledScene
Tiled scene layer. Added in QGIS 3.34.
 
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
 
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
 
@ TiledScene
Tiled scene connection.
 
Contains information pertaining to a candidate provider.
 
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
 
WidgetMode
Different ways a source select dialog can be used.
 
QList< QgsProviderRegistry::ProviderCandidateDetails > preferredProvidersForUri(const QString &uri) const
Returns the details for the preferred provider(s) for opening the specified uri.
 
QString encodeUri(const QString &providerKey, const QVariantMap &parts)
Reassembles a provider data source URI from its component paths (e.g.
 
static QString suggestLayerNameFromFilePath(const QString &path)
Suggests a suitable layer name given only a file path.
 
Represents connections to tiled scene data sources.
 
virtual void remove(const QString &name) const override
Deletes the connection from the settings.
 
static QString selectedConnection()
Returns the name of the last used connection.
 
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 void setSelectedConnection(const QString &name)
Stores the name of the last used connection.
 
static QStringList connectionList()
Returns a list of the stored connection names.
 
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.