17
17
***************************************************************************/
18
18
19
19
20
- #include < qgsapplication.h>
21
- #include < qgsdatasourceuri.h>
22
- #include < qgsgeometry.h>
23
- #include < qgsmaplayer.h>
24
- #include < qgsmaplayerregistry.h>
25
- #include < qgsofflineediting.h>
26
- #include < qgsproject.h>
27
- #include < qgsvectordataprovider.h>
28
- #include < qgsvectorlayereditbuffer.h>
20
+ #include " qgsapplication.h"
21
+ #include " qgsdatasourceuri.h"
22
+ #include " qgsgeometry.h"
23
+ #include " qgsmaplayer.h"
24
+ #include " qgsmaplayerregistry.h"
25
+ #include " qgsofflineediting.h"
26
+ #include " qgsproject.h"
27
+ #include " qgsvectordataprovider.h"
28
+ #include " qgsvectorlayereditbuffer.h"
29
+ #include " qgslayertreegroup.h"
30
+ #include " qgslayertreelayer.h"
29
31
30
32
#include < QDir>
31
33
#include < QDomDocument>
@@ -509,6 +511,20 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
509
511
QgsMapLayerRegistry::instance ()->addMapLayers (
510
512
QList<QgsMapLayer *>() << newLayer );
511
513
514
+ QgsLayerTreeGroup* layerTreeRoot = QgsProject::instance ()->layerTreeRoot ();
515
+ // Find the parent group of the original layer
516
+ QgsLayerTreeLayer* layerTreeLayer = layerTreeRoot->findLayer ( layer->id () );
517
+ QgsLayerTreeGroup* parentTreeGroup = qobject_cast<QgsLayerTreeGroup*>( layerTreeLayer->parent () );
518
+ if ( parentTreeGroup )
519
+ {
520
+ int index = parentTreeGroup->children ().indexOf ( layerTreeLayer );
521
+ // Move the new layer from the root group to the new group
522
+ QgsLayerTreeLayer* newLayerTreeLayer = layerTreeRoot->findLayer ( newLayer->id () );
523
+ QgsLayerTreeNode* newLayerTreeLayerClone = newLayerTreeLayer->clone ();
524
+ parentTreeGroup->insertChildNode ( index, newLayerTreeLayerClone );
525
+ layerTreeRoot->removeChildNode ( newLayerTreeLayer );
526
+ }
527
+
512
528
if ( hasLabels )
513
529
{
514
530
// NOTE: copy symbology of layers with labels enabled after adding to project, as it will crash otherwise (WORKAROUND)
@@ -526,7 +542,7 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
526
542
527
543
QgsFeatureIterator fit = layer->dataProvider ()->getFeatures ();
528
544
529
- emit progressModeSet ( QgsOfflineEditing::CopyFeatures, layer->featureCount () );
545
+ emit progressModeSet ( QgsOfflineEditing::CopyFeatures, layer->dataProvider ()-> featureCount () );
530
546
int featureCount = 1 ;
531
547
532
548
QList<QgsFeatureId> remoteFeatureIds;
@@ -551,7 +567,7 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
551
567
}
552
568
if ( newLayer->commitChanges () )
553
569
{
554
- emit progressModeSet ( QgsOfflineEditing::ProcessFeatures, layer->featureCount () );
570
+ emit progressModeSet ( QgsOfflineEditing::ProcessFeatures, layer->dataProvider ()-> featureCount () );
555
571
featureCount = 1 ;
556
572
557
573
// update feature id lookup
0 commit comments