Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feature] add XYZ tab to the datasource manager dialog
- Loading branch information
Showing
7 changed files
with
364 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
/*************************************************************************** | ||
qgsxyzsourceselect.cpp | ||
--------------------------------- | ||
begin : April 2020 | ||
copyright : (C) 2020 by Alexander Bruy | ||
email : alexander dot bruy at gmail dot com | ||
***************************************************************************/ | ||
|
||
/*************************************************************************** | ||
* * | ||
* This program is free software; you can redistribute it and/or modify * | ||
* it under the terms of the GNU General Public License as published by * | ||
* the Free Software Foundation; either version 2 of the License, or * | ||
* (at your option) any later version. * | ||
* * | ||
***************************************************************************/ | ||
|
||
#include "qgshelp.h" | ||
#include "qgsgui.h" | ||
#include "qgsxyzsourceselect.h" | ||
#include "qgsxyzconnection.h" | ||
#include "qgsxyzconnectiondialog.h" | ||
|
||
#include <QMessageBox> | ||
|
||
QgsXyzSourceSelect::QgsXyzSourceSelect( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode theWidgetMode ) | ||
: QgsAbstractDataSourceWidget( parent, fl, theWidgetMode ) | ||
{ | ||
setupUi( this ); | ||
QgsGui::enableAutoGeometryRestore( this ); | ||
|
||
connect( btnNew, &QPushButton::clicked, this, &QgsXyzSourceSelect::btnNew_clicked ); | ||
connect( btnEdit, &QPushButton::clicked, this, &QgsXyzSourceSelect::btnEdit_clicked ); | ||
connect( btnDelete, &QPushButton::clicked, this, &QgsXyzSourceSelect::btnDelete_clicked ); | ||
connect( btnSave, &QPushButton::clicked, this, &QgsXyzSourceSelect::btnSave_clicked ); | ||
connect( btnLoad, &QPushButton::clicked, this, &QgsXyzSourceSelect::btnLoad_clicked ); | ||
connect( cmbConnections, &QComboBox::currentTextChanged, this, &QgsXyzSourceSelect::cmbConnections_currentTextChanged ); | ||
connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsXyzSourceSelect::showHelp ); | ||
setupButtons( buttonBox ); | ||
populateConnectionList(); | ||
} | ||
|
||
void QgsXyzSourceSelect::btnNew_clicked() | ||
{ | ||
QgsXyzConnectionDialog *nc = new QgsXyzConnectionDialog( this ); | ||
if ( nc->exec() ) | ||
{ | ||
QgsXyzConnectionUtils::addConnection( nc->connection() ); | ||
populateConnectionList(); | ||
emit connectionsChanged(); | ||
} | ||
delete nc; | ||
} | ||
|
||
void QgsXyzSourceSelect::btnEdit_clicked() | ||
{ | ||
QgsXyzConnectionDialog *nc = new QgsXyzConnectionDialog( this ); | ||
nc->setConnection( QgsXyzConnectionUtils::connection( cmbConnections->currentText() ) ); | ||
if ( nc->exec() ) | ||
{ | ||
QgsXyzConnectionUtils::addConnection( nc->connection() ); | ||
populateConnectionList(); | ||
emit connectionsChanged(); | ||
} | ||
delete nc; | ||
} | ||
|
||
void QgsXyzSourceSelect::btnDelete_clicked() | ||
{ | ||
QString msg = tr( "Are you sure you want to remove the %1 connection and all associated settings?" ) | ||
.arg( cmbConnections->currentText() ); | ||
if ( QMessageBox::Yes != QMessageBox::question( this, tr( "Confirm Delete" ), msg, QMessageBox::Yes | QMessageBox::No ) ) | ||
return; | ||
|
||
QgsXyzConnectionUtils::deleteConnection( cmbConnections->currentText() ); | ||
|
||
populateConnectionList(); | ||
emit connectionsChanged(); | ||
} | ||
|
||
void QgsXyzSourceSelect::btnSave_clicked() | ||
{ | ||
} | ||
|
||
void QgsXyzSourceSelect::btnLoad_clicked() | ||
{ | ||
} | ||
|
||
void QgsXyzSourceSelect::addButtonClicked() | ||
{ | ||
emit addRasterLayer( QgsXyzConnectionUtils::connection( cmbConnections->currentText() ).encodedUri(), cmbConnections->currentText(), QStringLiteral( "wms" ) ); | ||
} | ||
|
||
void QgsXyzSourceSelect::populateConnectionList() | ||
{ | ||
cmbConnections->blockSignals( true ); | ||
cmbConnections->clear(); | ||
cmbConnections->addItems( QgsXyzConnectionUtils::connectionList() ); | ||
cmbConnections->blockSignals( false ); | ||
|
||
setConnectionListPosition(); | ||
|
||
btnEdit->setDisabled( cmbConnections->count() == 0 ); | ||
btnDelete->setDisabled( cmbConnections->count() == 0 ); | ||
cmbConnections->setDisabled( cmbConnections->count() == 0 ); | ||
} | ||
|
||
void QgsXyzSourceSelect::setConnectionListPosition() | ||
{ | ||
QString toSelect = QgsXyzConnectionUtils::selectedConnection(); | ||
|
||
cmbConnections->setCurrentIndex( cmbConnections->findText( toSelect ) ); | ||
|
||
if ( cmbConnections->currentIndex() < 0 ) | ||
{ | ||
if ( toSelect.isNull() ) | ||
cmbConnections->setCurrentIndex( 0 ); | ||
else | ||
cmbConnections->setCurrentIndex( cmbConnections->count() - 1 ); | ||
} | ||
emit enableButtons( !cmbConnections->currentText().isEmpty() ); | ||
} | ||
|
||
void QgsXyzSourceSelect::cmbConnections_currentTextChanged( const QString &text ) | ||
{ | ||
QgsXyzConnectionUtils::setSelectedConnection( text ); | ||
emit enableButtons( !text.isEmpty() ); | ||
} | ||
|
||
void QgsXyzSourceSelect::showHelp() | ||
{ | ||
QgsHelp::openHelp( QStringLiteral( "managing_data_source/opening_data.html#using-xyz-tile-services" ) ); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/*************************************************************************** | ||
qgsxyzsourceselect.h | ||
--------------------------------- | ||
begin : April 2020 | ||
copyright : (C) 2020 by Alexander Bruy | ||
email : alexander dot bruy at gmail dot com | ||
***************************************************************************/ | ||
|
||
/*************************************************************************** | ||
* * | ||
* This program is free software; you can redistribute it and/or modify * | ||
* it under the terms of the GNU General Public License as published by * | ||
* the Free Software Foundation; either version 2 of the License, or * | ||
* (at your option) any later version. * | ||
* * | ||
***************************************************************************/ | ||
|
||
#ifndef QGSXYZSOURCESELECT_H | ||
#define QGSXYZSOURCESELECT_H | ||
|
||
#include "qgsabstractdatasourcewidget.h" | ||
#include "ui_qgsxyzsourceselectbase.h" | ||
|
||
/*! | ||
* \brief Dialog to create connections to XYZ servers. | ||
* | ||
* This dialog allows the user to define and save connection information | ||
* for XYZ servers. | ||
* | ||
* The user can then connect and add layers from the XYZ server to the | ||
* map canvas. | ||
*/ | ||
class QgsXyzSourceSelect : public QgsAbstractDataSourceWidget, private Ui::QgsXyzSourceSelectBase | ||
{ | ||
Q_OBJECT | ||
|
||
public: | ||
//! Constructor | ||
QgsXyzSourceSelect( QWidget *parent = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None ); | ||
|
||
//! Determines the layers the user selected | ||
void addButtonClicked() override; | ||
|
||
private slots: | ||
|
||
//! Opens the create connection dialog to build a new connection | ||
void btnNew_clicked(); | ||
//! Opens a dialog to edit an existing connection | ||
void btnEdit_clicked(); | ||
//! Deletes the selected connection | ||
void btnDelete_clicked(); | ||
//! Saves connections to the file | ||
void btnSave_clicked(); | ||
//! Loads connections from the file | ||
void btnLoad_clicked(); | ||
//! Stores the selected datasource whenerver it is changed | ||
void cmbConnections_currentTextChanged( const QString &text ); | ||
|
||
private: | ||
void populateConnectionList(); | ||
void setConnectionListPosition(); | ||
void showHelp(); | ||
}; | ||
|
||
#endif // QGSXYZSOURCESELECT_H |
Oops, something went wrong.