@@ -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
9595QVector<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
0 commit comments