Skip to content

Commit

Permalink
migrate vector tile connections settings
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Jan 16, 2023
1 parent 5a8c73c commit 673f02d
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 35 deletions.
74 changes: 39 additions & 35 deletions src/core/vectortile/qgsvectortileconnection.cpp
Expand Up @@ -148,77 +148,81 @@ QStringList QgsVectorTileProviderConnection::connectionList()

QgsVectorTileProviderConnection::Data QgsVectorTileProviderConnection::connection( const QString &name )
{
QgsSettings settings;
settings.beginGroup( "qgis/connections-vector-tile/" + name );

if ( settings.value( "url" ).toString().isEmpty() )
if ( !settingsUrl->exists( name ) )
return QgsVectorTileProviderConnection::Data();

QgsVectorTileProviderConnection::Data conn;
conn.url = settings.value( QStringLiteral( "url" ) ).toString();
conn.zMin = settings.value( QStringLiteral( "zmin" ), -1 ).toInt();
conn.zMax = settings.value( QStringLiteral( "zmax" ), -1 ).toInt();
conn.authCfg = settings.value( QStringLiteral( "authcfg" ) ).toString();
conn.username = settings.value( QStringLiteral( "username" ) ).toString();
conn.password = settings.value( QStringLiteral( "password" ) ).toString();
conn.styleUrl = settings.value( QStringLiteral( "styleUrl" ) ).toString();

conn.httpHeaders = QgsHttpHeaders( settings );

if ( settings.contains( QStringLiteral( "serviceType" ) ) )
conn.url = settingsUrl->value( name );
conn.zMin = settingsZzmin->value( name );
conn.zMax = settingsZmax->value( name );
conn.authCfg = settingsAuthcfg->value( name );
conn.username = settingsUsername->value( name );
conn.password = settingsPassword->value( name );
conn.styleUrl = settingsStyleUrl->value( name );

if ( settingsHeaders->exists( name ) )
conn.httpHeaders = QgsHttpHeaders( settingsHeaders->value( name ) );
else
{
if ( settings.value( QStringLiteral( "serviceType" ) ) == QLatin1String( "arcgis" ) )
conn.serviceType = ArcgisVectorTileService;
// TODO QGIS 4 (or before) remove compatibility import
QgsSettings settings;
settings.beginGroup( "qgis/connections-vector-tile/" + name );
Q_NOWARN_DEPRECATED_PUSH
conn.httpHeaders = QgsHttpHeaders( settings );
Q_NOWARN_DEPRECATED_POP
}

if ( settingsServiceType->exists( name ) && settingsServiceType->value( name ) == QLatin1String( "arcgis" ) )
conn.serviceType = ArcgisVectorTileService;

return conn;
}

void QgsVectorTileProviderConnection::deleteConnection( const QString &name )
{
QgsSettings settings;
settings.remove( "qgis/connections-vector-tile/" + name );
sTreeConnectionVectorTile->deleteItem( name );
}

void QgsVectorTileProviderConnection::addConnection( const QString &name, QgsVectorTileProviderConnection::Data conn )
{
QgsSettings settings;
settingsUrl->setValue( conn.url, name );
settingsZzmin->setValue( conn.zMin, name );
settingsZmax->setValue( conn.zMax, name );
settingsAuthcfg->setValue( conn.authCfg, name );
settingsUsername->setValue( conn.username, name );
settingsPassword->setValue( conn.password, name );
settingsStyleUrl->setValue( conn.styleUrl, name );

settings.beginGroup( "qgis/connections-vector-tile/" + name );
settings.setValue( QStringLiteral( "url" ), conn.url );
settings.setValue( QStringLiteral( "zmin" ), conn.zMin );
settings.setValue( QStringLiteral( "zmax" ), conn.zMax );
settings.setValue( QStringLiteral( "authcfg" ), conn.authCfg );
settings.setValue( QStringLiteral( "username" ), conn.username );
settings.setValue( QStringLiteral( "password" ), conn.password );
settings.setValue( QStringLiteral( "styleUrl" ), conn.styleUrl );
settingsHeaders->setValue( conn.httpHeaders.headers(), name );

conn.httpHeaders.updateSettings( settings );

// TODO QGIS 4 (or before) remove compatibility import
QgsSettings settings;
settings.beginGroup( "qgis/connections-vector-tile/" + name );
Q_NOWARN_DEPRECATED_PUSH
conn.httpHeaders.updateSettings( settings );
Q_NOWARN_DEPRECATED_POP
switch ( conn.serviceType )
{
case Generic:
break;

case ArcgisVectorTileService:
settings.setValue( QStringLiteral( "serviceType" ), QStringLiteral( "arcgis" ) );
settingsServiceType->setValue( QStringLiteral( "arcgis" ), name );
break;
}
}

QString QgsVectorTileProviderConnection::selectedConnection()
{
const QgsSettings settings;
return settings.value( QStringLiteral( "qgis/connections-vector-tile/selected" ) ).toString();
return sTreeConnectionVectorTile->selectedItem();
}

void QgsVectorTileProviderConnection::setSelectedConnection( const QString &name )
{
QgsSettings settings;
return settings.setValue( QStringLiteral( "qgis/connections-vector-tile/selected" ), name );
sTreeConnectionVectorTile->selectedItem( {name} );
}

//

QgsVectorTileProviderConnection::QgsVectorTileProviderConnection( const QString &name )
: QgsAbstractProviderConnection( name )
Expand Down
17 changes: 17 additions & 0 deletions src/core/vectortile/qgsvectortileconnection.h
Expand Up @@ -17,6 +17,7 @@
#define QGSVECTORTILECONNECTION_H

#include "qgis_core.h"
#include "qgssettingsentryimpl.h"

///@cond PRIVATE
#define SIP_NO_FILE
Expand All @@ -29,6 +30,22 @@ class CORE_EXPORT QgsVectorTileProviderConnection : public QgsAbstractProviderCo
{

public:

#ifndef SIP_RUN

static inline QgsSettingsTreeNamedListElement *sTreeConnectionVectorTile = QgsSettings::sTtreeConnections->createNamedListElement( QStringLiteral( "vector-tile" ), QgsSettingsTreeNamedListElement::Option::NamedListSelectedItemSetting );

static inline QgsSettingsEntryString *settingsUrl = new QgsSettingsEntryString( QStringLiteral( "url" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryInteger *settingsZzmin = new QgsSettingsEntryInteger( QStringLiteral( "zmin" ), sTreeConnectionVectorTile, -1 );
static inline QgsSettingsEntryInteger *settingsZmax = new QgsSettingsEntryInteger( QStringLiteral( "zmax" ), sTreeConnectionVectorTile, -1 );
static inline QgsSettingsEntryString *settingsAuthcfg = new QgsSettingsEntryString( QStringLiteral( "authcfg" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryString *settingsUsername = new QgsSettingsEntryString( QStringLiteral( "username" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryString *settingsPassword = new QgsSettingsEntryString( QStringLiteral( "password" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryString *settingsStyleUrl = new QgsSettingsEntryString( QStringLiteral( "styleUrl" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryString *settingsServiceType = new QgsSettingsEntryString( QStringLiteral( "serviceType" ), sTreeConnectionVectorTile );
static inline QgsSettingsEntryVariantMap *settingsHeaders = new QgsSettingsEntryVariantMap( QStringLiteral( "http-header" ), sTreeConnectionVectorTile );
#endif

QgsVectorTileProviderConnection( const QString &name );
QgsVectorTileProviderConnection( const QString &uri, const QVariantMap &configuration );

Expand Down

0 comments on commit 673f02d

Please sign in to comment.