40 : QDialog( parent, fl )
41 , mOriginalConnName( connName )
46 connect( btnConnect, &QPushButton::clicked,
this, &QgsNewOgrConnection::btnConnect_clicked );
51 buttonBox->button( QDialogButtonBox::Ok )->setDisabled(
true );
52 connect( txtName, &QLineEdit::textChanged,
this, &QgsNewOgrConnection::updateOkButtonState );
53 connect( txtHost, &QLineEdit::textChanged,
this, &QgsNewOgrConnection::updateOkButtonState );
54 connect( txtDatabase, &QLineEdit::textChanged,
this, &QgsNewOgrConnection::updateOkButtonState );
55 connect( txtPort, &QLineEdit::textChanged,
this, &QgsNewOgrConnection::updateOkButtonState );
61 for (
int i = 0; i < dbDrivers.count(); i++ )
63 const QString dbDriver = dbDrivers.at( i );
64 if ( !dbDriver.isEmpty() )
65 cmbDatabaseTypes->addItem( dbDriver.split(
',' ).at( 0 ) );
67 txtName->setEnabled(
true );
68 cmbDatabaseTypes->setEnabled(
true );
70 if ( !connType.isEmpty() )
72 cmbDatabaseTypes->setCurrentIndex( cmbDatabaseTypes->findText( connType ) );
75 if ( !connName.isEmpty() )
79 const QString key =
'/' + connType +
"/connections/" + connName;
80 txtHost->setText( settings.
value( key +
"/host" ).toString() );
81 txtDatabase->setText( settings.
value( key +
"/database" ).toString() );
82 const QString port = settings.
value( key +
"/port" ).toString();
83 txtPort->setText( port );
84 if ( settings.
value( key +
"/store_username" ).toString() ==
"true"_L1 )
86 mAuthSettingsDatabase->setUsername( settings.
value( key +
"/username" ).toString() );
87 mAuthSettingsDatabase->setStoreUsernameChecked(
true );
89 if ( settings.
value( key +
"/store_password" ).toString() ==
"true"_L1 )
91 mAuthSettingsDatabase->setPassword( settings.
value( key +
"/password" ).toString() );
92 mAuthSettingsDatabase->setStorePasswordChecked(
true );
94 mAuthSettingsDatabase->setConfigId( settings.
value( key +
"/configid" ).toString() );
95 txtName->setText( connName );
96 txtName->setEnabled(
false );
97 cmbDatabaseTypes->setEnabled(
false );
99 txtName->setValidator(
new QRegularExpressionValidator( QRegularExpression(
"[^\\/]+" ), txtName ) );
100 mAuthSettingsDatabase->setDataprovider( u
"ogr"_s );
101 mAuthSettingsDatabase->showStoreCheckboxes(
true );
106 QString uri =
QgsGdalGuiUtils::createDatabaseURI( cmbDatabaseTypes->currentText(), txtHost->text(), txtDatabase->text(), txtPort->text(), mAuthSettingsDatabase->configId(), mAuthSettingsDatabase->username(), mAuthSettingsDatabase->password(),
true );
110 OGRSFDriverH pahDriver;
112 poDS = OGROpen( uri.toUtf8().constData(),
false, &pahDriver );
115 QMessageBox::information(
this, tr(
"Test Connection" ), tr(
"Connection failed - Check settings and try again.\n\nExtended error information:\n%1" ).arg( QString::fromUtf8( CPLGetLastErrorMsg() ) ) );
119 QMessageBox::information(
this, tr(
"Test Connection" ), tr(
"Connection to %1 was successful." ).arg( uri ) );
120 OGRReleaseDataSource( poDS );
140 QString baseKey =
'/' + cmbDatabaseTypes->currentText() +
"/connections/";
141 settings.
setValue( baseKey +
"selected", txtName->text() );
144 if ( ( mOriginalConnName.isNull() || mOriginalConnName != txtName->text() ) && settings.
contains( baseKey + txtName->text() +
"/host" ) && QMessageBox::question(
this, tr(
"Save Connection" ), tr(
"Should the existing connection %1 be overwritten?" ).arg( txtName->text() ), QMessageBox::Ok | QMessageBox::Cancel ) == QMessageBox::Cancel )
150 if ( !mOriginalConnName.isNull() && mOriginalConnName != txtName->text() )
152 settings.
remove( baseKey + mOriginalConnName );
155 baseKey += txtName->text();
156 settings.
setValue( baseKey +
"/host", txtHost->text() );
157 settings.
setValue( baseKey +
"/database", txtDatabase->text() );
158 settings.
setValue( baseKey +
"/port", txtPort->text() );
159 settings.
setValue( baseKey +
"/username", mAuthSettingsDatabase->storeUsernameIsChecked() ? mAuthSettingsDatabase->username() : QString() );
160 settings.
setValue( baseKey +
"/password", mAuthSettingsDatabase->storePasswordIsChecked() ? mAuthSettingsDatabase->password() : QString() );
161 settings.
setValue( baseKey +
"/store_username", mAuthSettingsDatabase->storeUsernameIsChecked() ?
"true" :
"false" );
162 settings.
setValue( baseKey +
"/store_password", mAuthSettingsDatabase->storePasswordIsChecked() ?
"true" :
"false" );
163 settings.
setValue( baseKey +
"/configid", mAuthSettingsDatabase->configId() );
static QString createDatabaseURI(const QString &connectionType, const QString &host, const QString &database, QString port, const QString &configId, QString username, QString password, bool expandAuthConfig=false)
Create database uri from connection parameters.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.