@@ -41,11 +41,11 @@ QVector<QgsDataItem *> QgsAfsRootItem::createChildren()
41
41
{
42
42
QVector<QgsDataItem *> connections;
43
43
44
- Q_FOREACH ( const QString &connName, QgsOwsConnection::connectionList ( " arcgisfeatureserver" ) )
44
+ const QStringList connectionList = QgsOwsConnection::connectionList ( " arcgisfeatureserver" );
45
+ for ( const QString &connName : connectionList )
45
46
{
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 ) );
49
49
}
50
50
return connections;
51
51
}
@@ -84,19 +84,22 @@ void QgsAfsRootItem::newConnection()
84
84
85
85
// /////////////////////////////////////////////////////////////////////////////
86
86
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 )
88
88
: QgsDataCollectionItem( parent, name, path )
89
- , mUrl( url )
89
+ , mConnName( connectionName )
90
90
{
91
91
mIconName = QStringLiteral ( " mIconConnect.svg" );
92
92
mCapabilities |= Collapse;
93
93
}
94
94
95
95
QVector<QgsDataItem *> QgsAfsConnectionItem::createChildren ()
96
96
{
97
+ const QgsOwsConnection connection ( QStringLiteral ( " arcgisfeatureserver" ), mConnName );
98
+ const QString url = connection.uri ().param ( QStringLiteral ( " url" ) );
99
+
97
100
QVector<QgsDataItem *> layers;
98
101
QString errorTitle, errorMessage;
99
- const QVariantMap serviceData = QgsArcGisRestUtils::getServiceInfo ( mUrl , errorTitle, errorMessage );
102
+ const QVariantMap serviceData = QgsArcGisRestUtils::getServiceInfo ( url , errorTitle, errorMessage );
100
103
if ( serviceData.isEmpty () )
101
104
{
102
105
return layers;
@@ -114,7 +117,7 @@ QVector<QgsDataItem *> QgsAfsConnectionItem::createChildren()
114
117
continue ;
115
118
}
116
119
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 );
118
121
layers.append ( layer );
119
122
}
120
123
@@ -158,7 +161,10 @@ void QgsAfsConnectionItem::editConnection()
158
161
159
162
if ( nc.exec () )
160
163
{
161
- mParent ->refresh ();
164
+ // the parent should be updated
165
+ refresh ();
166
+ if ( mParent )
167
+ mParent ->refreshConnections ();
162
168
}
163
169
}
164
170
@@ -170,7 +176,18 @@ void QgsAfsConnectionItem::deleteConnection()
170
176
return ;
171
177
172
178
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 ();
174
191
}
175
192
#endif
176
193
0 commit comments