Skip to content

Commit a6650f4

Browse files
committedJul 25, 2018
Fix AFS browser items not correctly repopulated after changing AFS connection URL
(cherry-picked from e3c7dff)
1 parent 29b24aa commit a6650f4

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed
 

‎src/providers/arcgisrest/qgsafsdataitems.cpp

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ QVector<QgsDataItem *> QgsAfsRootItem::createChildren()
4141
{
4242
QVector<QgsDataItem *> connections;
4343

44-
Q_FOREACH ( const QString &connName, QgsOwsConnection::connectionList( "arcgisfeatureserver" ) )
44+
const QStringList connectionList = QgsOwsConnection::connectionList( "arcgisfeatureserver" );
45+
for ( const QString &connName : connectionList )
4546
{
46-
QgsOwsConnection connection( QStringLiteral( "arcgisfeatureserver" ), connName );
47-
QString path = "afs:/" + connName;
48-
connections.append( new QgsAfsConnectionItem( this, connName, path, connection.uri().param( QStringLiteral( "url" ) ) ) );
47+
const QString path = QStringLiteral( "afs:/" ) + connName;
48+
connections.append( new QgsAfsConnectionItem( this, connName, path, connName ) );
4949
}
5050
return connections;
5151
}
@@ -84,19 +84,22 @@ void QgsAfsRootItem::newConnection()
8484

8585
///////////////////////////////////////////////////////////////////////////////
8686

87-
QgsAfsConnectionItem::QgsAfsConnectionItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &url )
87+
QgsAfsConnectionItem::QgsAfsConnectionItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &connectionName )
8888
: QgsDataCollectionItem( parent, name, path )
89-
, mUrl( url )
89+
, mConnName( connectionName )
9090
{
9191
mIconName = QStringLiteral( "mIconConnect.svg" );
9292
mCapabilities |= Collapse;
9393
}
9494

9595
QVector<QgsDataItem *> QgsAfsConnectionItem::createChildren()
9696
{
97+
const QgsOwsConnection connection( QStringLiteral( "arcgisfeatureserver" ), mConnName );
98+
const QString url = connection.uri().param( QStringLiteral( "url" ) );
99+
97100
QVector<QgsDataItem *> layers;
98101
QString errorTitle, errorMessage;
99-
const QVariantMap serviceData = QgsArcGisRestUtils::getServiceInfo( mUrl, errorTitle, errorMessage );
102+
const QVariantMap serviceData = QgsArcGisRestUtils::getServiceInfo( url, errorTitle, errorMessage );
100103
if ( serviceData.isEmpty() )
101104
{
102105
return layers;
@@ -114,7 +117,7 @@ QVector<QgsDataItem *> QgsAfsConnectionItem::createChildren()
114117
continue;
115118
}
116119
const QString id = layerInfoMap.value( QStringLiteral( "id" ) ).toString();
117-
QgsAfsLayerItem *layer = new QgsAfsLayerItem( this, mName, mUrl + "/" + id, layerInfoMap.value( QStringLiteral( "name" ) ).toString(), authid );
120+
QgsAfsLayerItem *layer = new QgsAfsLayerItem( this, mName, url + '/' + id, layerInfoMap.value( QStringLiteral( "name" ) ).toString(), authid );
118121
layers.append( layer );
119122
}
120123

@@ -158,7 +161,10 @@ void QgsAfsConnectionItem::editConnection()
158161

159162
if ( nc.exec() )
160163
{
161-
mParent->refresh();
164+
// the parent should be updated
165+
refresh();
166+
if ( mParent )
167+
mParent->refreshConnections();
162168
}
163169
}
164170

@@ -170,7 +176,18 @@ void QgsAfsConnectionItem::deleteConnection()
170176
return;
171177

172178
QgsOwsConnection::deleteConnection( QStringLiteral( "arcgisfeatureserver" ), mName );
173-
mParent->refresh();
179+
180+
// the parent should be updated
181+
if ( mParent )
182+
mParent->refreshConnections();
183+
}
184+
185+
void QgsAfsConnectionItem::refreshConnection()
186+
{
187+
refresh();
188+
// the parent should be updated
189+
if ( mParent )
190+
mParent->refreshConnections();
174191
}
175192
#endif
176193

‎src/providers/arcgisrest/qgsafsdataitems.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class QgsAfsConnectionItem : public QgsDataCollectionItem
4545
{
4646
Q_OBJECT
4747
public:
48-
QgsAfsConnectionItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &url );
48+
QgsAfsConnectionItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &connectionName );
4949
QVector<QgsDataItem *> createChildren() override;
5050
bool equal( const QgsDataItem *other ) override;
5151
#ifdef HAVE_GUI
@@ -60,7 +60,7 @@ class QgsAfsConnectionItem : public QgsDataCollectionItem
6060
#endif
6161

6262
private:
63-
QString mUrl;
63+
QString mConnName;
6464
};
6565

6666

0 commit comments

Comments
 (0)
Please sign in to comment.