Skip to content

Commit ee79ab2

Browse files
authoredMar 6, 2019
Merge pull request #9402 from qgis/backport-8818-on-release-3_4
Backport #8818 on release-3_4
2 parents b123b53 + bc4ec90 commit ee79ab2

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed
 

‎src/core/qgsofflineediting.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ extern "C"
5656
#define CUSTOM_PROPERTY_IS_OFFLINE_EDITABLE "isOfflineEditable"
5757
#define CUSTOM_PROPERTY_REMOTE_SOURCE "remoteSource"
5858
#define CUSTOM_PROPERTY_REMOTE_PROVIDER "remoteProvider"
59+
#define CUSTOM_SHOW_FEATURE_COUNT "showFeatureCount"
5960
#define PROJECT_ENTRY_SCOPE_OFFLINE "OfflineEditingPlugin"
6061
#define PROJECT_ENTRY_KEY_OFFLINE_DB_PATH "/OfflineDbPath"
6162

@@ -259,6 +260,11 @@ void QgsOfflineEditing::synchronize()
259260
updateMapThemes( offlineLayer, remoteLayer );
260261
updateLayerOrder( offlineLayer, remoteLayer );
261262

263+
//set QgsLayerTreeNode properties back
264+
QgsLayerTreeLayer *layerTreeLayer = QgsProject::instance()->layerTreeRoot()->findLayer( offlineLayer->id() );
265+
QgsLayerTreeLayer *newLayerTreeLayer = QgsProject::instance()->layerTreeRoot()->findLayer( remoteLayer->id() );
266+
newLayerTreeLayer->setCustomProperty( CUSTOM_SHOW_FEATURE_COUNT, layerTreeLayer->customProperty( CUSTOM_SHOW_FEATURE_COUNT ) );
267+
262268
// apply layer edit log
263269
QString qgisLayerId = layer->id();
264270
QString sql = QStringLiteral( "SELECT \"id\" FROM 'log_layer_ids' WHERE \"qgis_id\" = '%1'" ).arg( qgisLayerId );
@@ -843,6 +849,8 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
843849
if ( newLayerTreeLayer )
844850
{
845851
QgsLayerTreeNode *newLayerTreeLayerClone = newLayerTreeLayer->clone();
852+
//copy the showFeatureCount property to the new node
853+
newLayerTreeLayerClone->setCustomProperty( CUSTOM_SHOW_FEATURE_COUNT, layerTreeLayer->customProperty( CUSTOM_SHOW_FEATURE_COUNT ) );
846854
QgsLayerTreeGroup *grp = qobject_cast<QgsLayerTreeGroup *>( newLayerTreeLayer->parent() );
847855
parentTreeGroup->insertChildNode( index, newLayerTreeLayerClone );
848856
if ( grp )

‎tests/src/core/testqgsofflineediting.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "qgsofflineediting.h"
2626
#include "qgstest.h"
2727
#include "qgsvectorlayerref.h"
28+
#include "qgslayertree.h"
2829

2930
/**
3031
* \ingroup UnitTests
@@ -107,12 +108,21 @@ void TestQgsOfflineEditing::createSpatialiteAndSynchronizeBack()
107108
QCOMPARE( mpLayer->featureCount(), numberOfFeatures );
108109
QCOMPARE( mpLayer->fields().size(), numberOfFields );
109110

111+
//set on LayerTreeNode showFeatureCount property
112+
QgsLayerTreeLayer *layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
113+
layerTreelayer->setCustomProperty( QStringLiteral( "showFeatureCount" ), 1 );
114+
110115
//convert
111116
mOfflineEditing->convertToOfflineProject( offlineDataPath, offlineDbFile, layerIds, false, QgsOfflineEditing::SpatiaLite );
112117

113118
mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() );
114119
QCOMPARE( mpLayer->name(), QStringLiteral( "points (offline)" ) );
115120
QCOMPARE( mpLayer->featureCount(), numberOfFeatures );
121+
//check LayerTreeNode showFeatureCount property
122+
layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
123+
QCOMPARE( layerTreelayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toInt(), 1 );
124+
//unset on LayerTreeNode showFeatureCount property
125+
layerTreelayer->setCustomProperty( QStringLiteral( "showFeatureCount" ), 0 );
116126

117127
//synchronize back
118128
mOfflineEditing->synchronize();
@@ -121,6 +131,10 @@ void TestQgsOfflineEditing::createSpatialiteAndSynchronizeBack()
121131
QCOMPARE( mpLayer->name(), QStringLiteral( "points" ) );
122132
QCOMPARE( mpLayer->featureCount(), numberOfFeatures );
123133
QCOMPARE( mpLayer->fields().size(), numberOfFields );
134+
135+
//check LayerTreeNode showFeatureCount property
136+
layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
137+
QCOMPARE( layerTreelayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toInt(), 0 );
124138
}
125139

126140
void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack()
@@ -134,6 +148,11 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack()
134148
it.nextFeature( firstFeatureBeforeAction );
135149

136150
connect( mOfflineEditing, &QgsOfflineEditing::warning, this, []( const QString & title, const QString & message ) { qDebug() << title << message; } );
151+
152+
//set on LayerTreeNode showFeatureCount property
153+
QgsLayerTreeLayer *layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
154+
layerTreelayer->setCustomProperty( QStringLiteral( "showFeatureCount" ), 1 );
155+
137156
//convert
138157
mOfflineEditing->convertToOfflineProject( offlineDataPath, offlineDbFile, layerIds, false, QgsOfflineEditing::GPKG );
139158

@@ -142,6 +161,9 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack()
142161
QCOMPARE( mpLayer->featureCount(), numberOfFeatures );
143162
//comparing with the number +1 because GPKG created an fid
144163
QCOMPARE( mpLayer->fields().size(), numberOfFields + 1 );
164+
//check LayerTreeNode showFeatureCount property
165+
layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
166+
QCOMPARE( layerTreelayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toInt(), 1 );
145167

146168
QgsFeature firstFeatureInAction;
147169
it = mpLayer->getFeatures();
@@ -159,13 +181,20 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack()
159181
mpLayer->commitChanges();
160182
QCOMPARE( mpLayer->featureCount(), numberOfFeatures + 1 );
161183

184+
//unset on LayerTreeNode showFeatureCount property
185+
layerTreelayer->setCustomProperty( QStringLiteral( "showFeatureCount" ), 0 );
186+
162187
//synchronize back
163188
mOfflineEditing->synchronize();
164189

165190
mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() );
166191
QCOMPARE( mpLayer->name(), QStringLiteral( "points" ) );
167192
QCOMPARE( mpLayer->dataProvider()->featureCount(), numberOfFeatures + 1 );
168193
QCOMPARE( mpLayer->fields().size(), numberOfFields );
194+
//check LayerTreeNode showFeatureCount property
195+
layerTreelayer = QgsProject::instance()->layerTreeRoot()->findLayer( mpLayer->id() );
196+
QCOMPARE( layerTreelayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toInt(), 0 );
197+
169198
//get last feature
170199
QgsFeature f = mpLayer->getFeature( mpLayer->dataProvider()->featureCount() - 1 );
171200
qDebug() << "FID:" << f.id() << "Class:" << f.attribute( "Class" ).toString();

0 commit comments

Comments
 (0)
Please sign in to comment.