QGIS API Documentation 3.99.0-Master (e9821da5c6b)
Loading...
Searching...
No Matches
qgstiledsceneconnection.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgstiledsceneconnection.cpp
3 ---------------------
4 begin : June 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgsdatasourceuri.h"
19#include "qgshttpheaders.h"
21
22#include <QFileInfo>
23#include <QString>
24
25using namespace Qt::StringLiterals;
26
28
29
30const QgsSettingsEntryString *QgsTiledSceneProviderConnection::settingsProvider = new QgsSettingsEntryString( u"provider"_s, sTreeConnectionTiledScene );
31const QgsSettingsEntryString *QgsTiledSceneProviderConnection::settingsUrl = new QgsSettingsEntryString( u"url"_s, sTreeConnectionTiledScene );
32const QgsSettingsEntryString *QgsTiledSceneProviderConnection::settingsAuthcfg = new QgsSettingsEntryString( u"authcfg"_s, sTreeConnectionTiledScene );
33const QgsSettingsEntryString *QgsTiledSceneProviderConnection::settingsUsername = new QgsSettingsEntryString( u"username"_s, sTreeConnectionTiledScene );
34const QgsSettingsEntryString *QgsTiledSceneProviderConnection::settingsPassword = new QgsSettingsEntryString( u"password"_s, sTreeConnectionTiledScene );
35const QgsSettingsEntryVariantMap *QgsTiledSceneProviderConnection::settingsHeaders = new QgsSettingsEntryVariantMap( u"http-header"_s, sTreeConnectionTiledScene );
36
38
40{
42
43 if ( !data.url.isEmpty() )
44 uri.setParam( u"url"_s, data.url );
45 if ( !data.authCfg.isEmpty() )
46 uri.setAuthConfigId( data.authCfg );
47 if ( !data.username.isEmpty() )
48 uri.setUsername( data.username );
49 if ( !data.password.isEmpty() )
50 uri.setPassword( data.password );
51
52 uri.setHttpHeaders( data.httpHeaders );
53
54 return uri.encodedUri();
55}
56
58{
59 QgsDataSourceUri dsUri;
60 dsUri.setEncodedUri( uri );
61
63 conn.url = dsUri.param( u"url"_s );
64 conn.authCfg = dsUri.authConfigId();
65 conn.username = dsUri.username();
66 conn.password = dsUri.password();
67 conn.httpHeaders = dsUri.httpHeaders();
68
69 return conn;
70}
71
73{
75
76 uri.setParam( u"url"_s, data.url );
77 if ( !data.authCfg.isEmpty() )
78 uri.setAuthConfigId( data.authCfg );
79 if ( !data.username.isEmpty() )
80 uri.setUsername( data.username );
81 if ( !data.password.isEmpty() )
82 uri.setPassword( data.password );
83
84 uri.setHttpHeaders( data.httpHeaders );
85
86 return uri.encodedUri();
87}
88
90{
91 return QgsTiledSceneProviderConnection::sTreeConnectionTiledScene->items();
92}
93
95{
96 if ( !settingsUrl->exists( name ) )
98
100 conn.provider = settingsProvider->value( name );
101 conn.url = settingsUrl->value( name );
102 conn.authCfg = settingsAuthcfg->value( name );
103 conn.username = settingsUsername->value( name );
104 conn.password = settingsPassword->value( name );
105
106 if ( settingsHeaders->exists( name ) )
107 conn.httpHeaders = QgsHttpHeaders( settingsHeaders->value( name ) );
108
109 return conn;
110}
111
112void QgsTiledSceneProviderConnection::addConnection( const QString &name, const Data &conn )
113{
114 settingsProvider->setValue( conn.provider, name );
115 settingsUrl->setValue( conn.url, name );
116 settingsAuthcfg->setValue( conn.authCfg, name );
117 settingsUsername->setValue( conn.username, name );
118 settingsPassword->setValue( conn.password, name );
119 settingsHeaders->setValue( conn.httpHeaders.headers(), name );
120}
121
123{
124 return sTreeConnectionTiledScene->selectedItem();
125}
126
128{
129 sTreeConnectionTiledScene->setSelectedItem( name );
130}
131
134{
135 const QgsTiledSceneProviderConnection::Data connectionData = connection( name );
136 mProvider = connectionData.provider;
137 setUri( encodedUri( connectionData ) );
138}
139
140QgsTiledSceneProviderConnection::QgsTiledSceneProviderConnection( const QString &uri, const QString &provider, const QVariantMap &configuration )
142 , mProvider( provider )
143{
144}
145
146void QgsTiledSceneProviderConnection::store( const QString &name ) const
147{
149 connectionData.provider = mProvider;
150 addConnection( name, connectionData );
151}
152
153void QgsTiledSceneProviderConnection::remove( const QString &name ) const
154{
155 sTreeConnectionTiledScene->deleteItem( name );
156}
QVariantMap configuration() const
Returns the connection configuration parameters.
void setUri(const QString &uri)
Sets the connection data source URI to uri.
QgsAbstractProviderConnection(const QString &name)
Creates a new connection with name by reading its configuration from the settings.
QString uri() const
Returns the connection data source URI string representation.
Stores the component parts of a data source URI (e.g.
void setEncodedUri(const QByteArray &uri)
Sets the complete encoded uri.
QgsHttpHeaders httpHeaders() const
Returns http headers.
QString param(const QString &key) const
Returns a generic parameter value corresponding to the specified key.
QString username() const
Returns the username stored in the URI.
QString password() const
Returns the password stored in the URI.
QString authConfigId() const
Returns any associated authentication configuration ID stored in the URI.
Implements simple HTTP header management.
QVariantMap headers() const
Returns the headers as a variant map.
A string settings entry.
A string list settings entry.
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.
void store(const QString &name) const override
Stores the connection in the settings.
static Data connection(const QString &name)
Returns connection details for the stored connection with the specified name.
PRIVATE QgsTiledSceneProviderConnection(const QString &name)
Constructor for QgsTiledSceneProviderConnection, using the stored settings with the specified connect...
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.
static QString encodedLayerUri(const Data &data)
Returns connection data encoded as a string containing a URI for a QgsTiledSceneLayer.
Represents decoded data of a tiled scene connection.
QString authCfg
Authentication configuration ID.