[QGIS Commit] r15258 - in trunk/qgis: python/core src/app/postgres
src/core src/ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Feb 24 12:53:50 EST 2011
Author: jef
Date: 2011-02-24 09:53:50 -0800 (Thu, 24 Feb 2011)
New Revision: 15258
Modified:
trunk/qgis/python/core/qgsdatasourceuri.sip
trunk/qgis/src/app/postgres/qgspgnewconnection.cpp
trunk/qgis/src/app/postgres/qgspgsourceselect.cpp
trunk/qgis/src/core/qgsdatasourceuri.cpp
trunk/qgis/src/core/qgsdatasourceuri.h
trunk/qgis/src/ui/qgspgnewconnectionbase.ui
Log:
implement #3522
Modified: trunk/qgis/python/core/qgsdatasourceuri.sip
===================================================================
--- trunk/qgis/python/core/qgsdatasourceuri.sip 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/python/core/qgsdatasourceuri.sip 2011-02-24 17:53:50 UTC (rev 15258)
@@ -39,6 +39,14 @@
const QString& aPassword,
SSLmode sslmode = SSLprefer );
+ //! Set all connection related members at once
+ //! \note added in 1.7
+ void setConnection(const QString& service,
+ const QString& aDatabase,
+ const QString& aUsername,
+ const QString& aPassword,
+ SSLmode sslmode = SSLprefer );
+
//! Set database
//! \note added in 1.4
void setDatabase( const QString &database );
@@ -73,6 +81,9 @@
QString port() const;
SSLmode sslMode() const;
+ // added in 1.7
+ QString service() const;
+
void setSql(QString sql);
// added in 1.2
Modified: trunk/qgis/src/app/postgres/qgspgnewconnection.cpp
===================================================================
--- trunk/qgis/src/app/postgres/qgspgnewconnection.cpp 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/src/app/postgres/qgspgnewconnection.cpp 2011-02-24 17:53:50 UTC (rev 15258)
@@ -48,14 +48,15 @@
QSettings settings;
QString key = "/PostgreSQL/connections/" + connName;
+ txtService->setText( settings.value( key + "/service" ).toString() );
txtHost->setText( settings.value( key + "/host" ).toString() );
- txtDatabase->setText( settings.value( key + "/database" ).toString() );
QString port = settings.value( key + "/port" ).toString();
if ( port.length() == 0 )
{
port = "5432";
}
txtPort->setText( port );
+ txtDatabase->setText( settings.value( key + "/database" ).toString() );
cb_publicSchemaOnly->setChecked( settings.value( key + "/publicOnly", false ).toBool() );
cb_geometryColumnsOnly->setChecked( settings.value( key + "/geometrycolumnsOnly", false ).toBool() );
cb_allowGeometrylessTables->setChecked( settings.value( key + "/allowGeometrylessTables", false ).toBool() );
@@ -102,7 +103,8 @@
// warn if entry was renamed to an existing connection
if (( mOriginalConnName.isNull() || mOriginalConnName != txtName->text() ) &&
- settings.contains( baseKey + txtName->text() + "/host" ) &&
+ ( settings.contains( baseKey + txtName->text() + "/service" ) ||
+ settings.contains( baseKey + txtName->text() + "/host" ) ) &&
QMessageBox::question( this,
tr( "Save connection" ),
tr( "Should the existing connection %1 be overwritten?" ).arg( txtName->text() ),
@@ -119,9 +121,10 @@
}
baseKey += txtName->text();
+ settings.setValue( baseKey + "/service", txtService->text() );
settings.setValue( baseKey + "/host", txtHost->text() );
+ settings.setValue( baseKey + "/port", txtPort->text() );
settings.setValue( baseKey + "/database", txtDatabase->text() );
- settings.setValue( baseKey + "/port", txtPort->text() );
settings.setValue( baseKey + "/username", chkStoreUsername->isChecked() ? txtUsername->text() : "" );
settings.setValue( baseKey + "/password", chkStorePassword->isChecked() ? txtPassword->text() : "" );
settings.setValue( baseKey + "/publicOnly", cb_publicSchemaOnly->isChecked() );
@@ -160,9 +163,18 @@
void QgsPgNewConnection::testConnection()
{
QgsDataSourceURI uri;
- uri.setConnection( txtHost->text(), txtPort->text(), txtDatabase->text(),
- txtUsername->text(), txtPassword->text(),
- ( QgsDataSourceURI::SSLmode ) cbxSSLmode->itemData( cbxSSLmode->currentIndex() ).toInt() );
+ if ( !txtService->text().isEmpty() )
+ {
+ uri.setConnection( txtService->text(), txtDatabase->text(),
+ txtUsername->text(), txtPassword->text(),
+ ( QgsDataSourceURI::SSLmode ) cbxSSLmode->itemData( cbxSSLmode->currentIndex() ).toInt() );
+ }
+ else
+ {
+ uri.setConnection( txtHost->text(), txtPort->text(), txtDatabase->text(),
+ txtUsername->text(), txtPassword->text(),
+ ( QgsDataSourceURI::SSLmode ) cbxSSLmode->itemData( cbxSSLmode->currentIndex() ).toInt() );
+ }
QString conninfo = uri.connectionInfo();
QgsDebugMsg( "PQconnectdb(\"" + conninfo + "\");" );
Modified: trunk/qgis/src/app/postgres/qgspgsourceselect.cpp
===================================================================
--- trunk/qgis/src/app/postgres/qgspgsourceselect.cpp 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/src/app/postgres/qgspgsourceselect.cpp 2011-02-24 17:53:50 UTC (rev 15258)
@@ -137,11 +137,12 @@
if ( QMessageBox::Ok != QMessageBox::information( this, tr( "Confirm Delete" ), msg, QMessageBox::Ok | QMessageBox::Cancel ) )
return;
+ settings.remove( key + "/service" );
settings.remove( key + "/host" );
+ settings.remove( key + "/port" );
settings.remove( key + "/database" );
settings.remove( key + "/username" );
settings.remove( key + "/password" );
- settings.remove( key + "/port" );
settings.remove( key + "/sslmode" );
settings.remove( key + "/publicOnly" );
settings.remove( key + "/geometryColumnsOnly" );
@@ -415,17 +416,23 @@
QString key = "/PostgreSQL/connections/" + cmbConnections->currentText();
- QString database = settings.value( key + "/database" ).toString();
- QString username = settings.value( key + "/username" ).toString();
- QString password = settings.value( key + "/password" ).toString();
+ QString service = settings.value( key + "/service" ).toString();
+ QString host = settings.value( key + "/host" ).toString();
+ QString port = settings.value( key + "/port" ).toString();
+ QString database = settings.value( key + "/database" ).toString();
+ QString username = settings.value( key + "/username" ).toString();
+ QString password = settings.value( key + "/password" ).toString();
+ QgsDataSourceURI::SSLmode sslmode = ( QgsDataSourceURI::SSLmode ) settings.value( key + "/sslmode", QgsDataSourceURI::SSLprefer ).toInt();
QgsDataSourceURI uri;
- uri.setConnection( settings.value( key + "/host" ).toString(),
- settings.value( key + "/port" ).toString(),
- database,
- username,
- password,
- ( QgsDataSourceURI::SSLmode ) settings.value( key + "/sslmode", QgsDataSourceURI::SSLprefer ).toInt() );
+ if ( !service.isEmpty() )
+ {
+ uri.setConnection( service, database, username, password, sslmode );
+ }
+ else
+ {
+ uri.setConnection( host, port, database, username, password, sslmode );
+ }
bool searchPublicOnly = settings.value( key + "/publicOnly" ).toBool();
bool searchGeometryColumnsOnly = settings.value( key + "/geometryColumnsOnly" ).toBool();
@@ -511,7 +518,9 @@
"Check your username and password and try again.\n\n"
"The database said:\n%3" )
.arg( settings.value( key + "/database" ).toString() )
- .arg( settings.value( key + "/host" ).toString() )
+ .arg( !settings.value( key + "/service" ).toString().isEmpty()
+ ? settings.value( key + "/service" ).toString()
+ : settings.value( key + "/host" ).toString() )
.arg( QString::fromUtf8( PQerrorMessage( pd ) ) ) );
}
Modified: trunk/qgis/src/core/qgsdatasourceuri.cpp
===================================================================
--- trunk/qgis/src/core/qgsdatasourceuri.cpp 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/src/core/qgsdatasourceuri.cpp 2011-02-24 17:53:50 UTC (rev 15258)
@@ -118,7 +118,7 @@
}
else if ( pname == "service" )
{
- QgsDebugMsg( "service keyword ignored" );
+ mService = pval;
}
else if ( pname == "user" )
{
@@ -234,6 +234,11 @@
mUsername = username;
}
+QString QgsDataSourceURI::service() const
+{
+ return mService;
+}
+
QString QgsDataSourceURI::host() const
{
return mHost;
@@ -401,37 +406,46 @@
QString QgsDataSourceURI::connectionInfo() const
{
- QString connectionInfo = "dbname='" + escape( mDatabase ) + "'";
+ QStringList connectionItems;
- if ( mHost != "" )
+ if ( mDatabase != "" )
{
- connectionInfo += " host=" + mHost;
+ connectionItems << "dbname='" + escape( mDatabase ) + "'";
+ }
+
+ if ( mService != "" )
+ {
+ connectionItems << "service='" + escape( mService ) + "'";
+ }
+ else if ( mHost != "" )
+ {
+ connectionItems << "host=" + mHost;
if ( mPort != "" )
- connectionInfo += " port=" + mPort;
+ connectionItems << "port=" + mPort;
}
if ( mUsername != "" )
{
- connectionInfo += " user='" + escape( mUsername ) + "'";
+ connectionItems << "user='" + escape( mUsername ) + "'";
if ( mPassword != "" )
{
- connectionInfo += " password='" + escape( mPassword ) + "'";
+ connectionItems << "password='" + escape( mPassword ) + "'";
}
}
if ( mSSLmode == SSLdisable )
- connectionInfo += " sslmode=disable";
+ connectionItems << "sslmode=disable";
else if ( mSSLmode == SSLallow )
- connectionInfo += " sslmode=allow";
+ connectionItems << "sslmode=allow";
else if ( mSSLmode == SSLrequire )
- connectionInfo += " sslmode=require";
+ connectionItems << "sslmode=require";
#if 0
else if ( mSSLmode == SSLprefer )
- connectionInfo += " sslmode=prefer";
+ connectionItems << "sslmode=prefer";
#endif
- return connectionInfo;
+ return connectionItems.join( " " );
}
QString QgsDataSourceURI::uri() const
@@ -482,6 +496,19 @@
mSSLmode = sslmode;
}
+void QgsDataSourceURI::setConnection( const QString &service,
+ const QString &database,
+ const QString &username,
+ const QString &password,
+ SSLmode sslmode )
+{
+ mService = service;
+ mDatabase = database;
+ mUsername = username;
+ mPassword = password;
+ mSSLmode = sslmode;
+}
+
void QgsDataSourceURI::setDataSource( const QString &schema,
const QString &table,
const QString &geometryColumn,
Modified: trunk/qgis/src/core/qgsdatasourceuri.h
===================================================================
--- trunk/qgis/src/core/qgsdatasourceuri.h 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/src/core/qgsdatasourceuri.h 2011-02-24 17:53:50 UTC (rev 15258)
@@ -57,6 +57,14 @@
const QString& aPassword,
SSLmode sslmode = SSLprefer );
+ //! Set all connection related members at once (for the service case)
+ //! \note This optional sslmode parameter has been added in version 1.7
+ void setConnection( const QString& aService,
+ const QString& aDatabase,
+ const QString& aUsername,
+ const QString& aPassword,
+ SSLmode sslmode = SSLprefer );
+
//! Set database
// \note added in 1.4
void setDatabase( const QString &database );
@@ -100,6 +108,9 @@
QString password() const;
enum SSLmode sslMode() const;
+ // added in 1.7
+ QString service() const;
+
// added in version 1.2
QString keyColumn() const;
void setKeyColumn( QString column );
@@ -113,10 +124,12 @@
//! host name
QString mHost;
+ //! port the database server listens on
+ QString mPort;
+ //! service name
+ QString mService;
//! database name
QString mDatabase;
- //! port the database server listens on
- QString mPort;
//! schema
QString mSchema;
//! spatial table
Modified: trunk/qgis/src/ui/qgspgnewconnectionbase.ui
===================================================================
--- trunk/qgis/src/ui/qgspgnewconnectionbase.ui 2011-02-24 17:47:53 UTC (rev 15257)
+++ trunk/qgis/src/ui/qgspgnewconnectionbase.ui 2011-02-24 17:53:50 UTC (rev 15258)
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>352</width>
- <height>413</height>
+ <height>428</height>
</rect>
</property>
<property name="sizePolicy">
@@ -71,22 +71,22 @@
</widget>
</item>
<item>
- <widget class="QLabel" name="TextLabel1">
+ <widget class="QLabel" name="label">
<property name="text">
- <string>Host</string>
+ <string>Service</string>
</property>
<property name="buddy">
- <cstring>txtHost</cstring>
+ <cstring>txtService</cstring>
</property>
</widget>
</item>
<item>
- <widget class="QLabel" name="TextLabel2">
+ <widget class="QLabel" name="TextLabel1">
<property name="text">
- <string>Database</string>
+ <string>Host</string>
</property>
<property name="buddy">
- <cstring>txtDatabase</cstring>
+ <cstring>txtHost</cstring>
</property>
</widget>
</item>
@@ -101,10 +101,23 @@
</widget>
</item>
<item>
+ <widget class="QLabel" name="TextLabel2">
+ <property name="text">
+ <string>Database</string>
+ </property>
+ <property name="buddy">
+ <cstring>txtDatabase</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QLabel" name="TextLabel3_3">
<property name="text">
<string>SSL mode</string>
</property>
+ <property name="buddy">
+ <cstring>cbxSSLmode</cstring>
+ </property>
</widget>
</item>
<item>
@@ -145,10 +158,10 @@
</widget>
</item>
<item>
- <widget class="QLineEdit" name="txtHost"/>
+ <widget class="QLineEdit" name="txtService"/>
</item>
<item>
- <widget class="QLineEdit" name="txtDatabase"/>
+ <widget class="QLineEdit" name="txtHost"/>
</item>
<item>
<widget class="QLineEdit" name="txtPort">
@@ -158,6 +171,9 @@
</widget>
</item>
<item>
+ <widget class="QLineEdit" name="txtDatabase"/>
+ </item>
+ <item>
<widget class="QComboBox" name="cbxSSLmode"/>
</item>
<item>
@@ -255,7 +271,7 @@
<string>Allow geometryless tables</string>
</property>
<property name="checked">
- <bool>true</bool>
+ <bool>false</bool>
</property>
</widget>
</item>
@@ -274,18 +290,20 @@
<layoutdefault spacing="6" margin="11"/>
<tabstops>
<tabstop>txtName</tabstop>
+ <tabstop>txtService</tabstop>
<tabstop>txtHost</tabstop>
+ <tabstop>txtPort</tabstop>
<tabstop>txtDatabase</tabstop>
- <tabstop>txtPort</tabstop>
<tabstop>cbxSSLmode</tabstop>
<tabstop>txtUsername</tabstop>
<tabstop>txtPassword</tabstop>
<tabstop>chkStoreUsername</tabstop>
<tabstop>chkStorePassword</tabstop>
+ <tabstop>btnConnect</tabstop>
<tabstop>cb_geometryColumnsOnly</tabstop>
<tabstop>cb_publicSchemaOnly</tabstop>
+ <tabstop>cb_allowGeometrylessTables</tabstop>
<tabstop>cb_useEstimatedMetadata</tabstop>
- <tabstop>btnConnect</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources/>
More information about the QGIS-commit
mailing list