16
16
* *
17
17
***************************************************************************/
18
18
19
- #include " offline_editing.h"
20
- #include " offline_editing_progress_dialog.h"
21
19
22
20
#include < qgsapplication.h>
23
21
#include < qgsdatasourceuri.h>
24
22
#include < qgsgeometry.h>
25
- #include < qgslegendinterface.h>
26
23
#include < qgsmaplayer.h>
27
24
#include < qgsmaplayerregistry.h>
25
+ #include < qgsofflineediting.h>
28
26
#include < qgsproject.h>
29
27
#include < qgsvectordataprovider.h>
30
28
@@ -50,9 +48,8 @@ extern "C"
50
48
#define PROJECT_ENTRY_SCOPE_OFFLINE " OfflineEditingPlugin"
51
49
#define PROJECT_ENTRY_KEY_OFFLINE_DB_PATH " /OfflineDbPath"
52
50
53
- QgsOfflineEditing::QgsOfflineEditing ( QgsOfflineEditingProgressDialog* progressDialog )
51
+ QgsOfflineEditing::QgsOfflineEditing ()
54
52
{
55
- mProgressDialog = progressDialog;
56
53
connect ( QgsMapLayerRegistry::instance (), SIGNAL ( layerWasAdded ( QgsMapLayer* ) ), this , SLOT ( layerAdded ( QgsMapLayer* ) ) );
57
54
}
58
55
@@ -85,19 +82,18 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString& offlineDataPath,
85
82
// create logging tables
86
83
createLoggingTables ( db );
87
84
88
- mProgressDialog ->setTitle ( " Converting to offline project" );
89
- mProgressDialog ->show ();
85
+ emit progressStarted ();
90
86
91
87
// copy selected vector layers to SpatiaLite
92
88
for ( int i = 0 ; i < layerIds.count (); i++ )
93
89
{
94
- mProgressDialog -> setCurrentLayer ( i + 1 , layerIds.count () );
90
+ emit layerProgressUpdated ( i + 1 , layerIds.count () );
95
91
96
92
QgsMapLayer* layer = QgsMapLayerRegistry::instance ()->mapLayer ( layerIds.at ( i ) );
97
93
copyVectorLayer ( qobject_cast<QgsVectorLayer*>( layer ), db, dbPath );
98
94
}
99
95
100
- mProgressDialog -> hide ();
96
+ emit progressStopped ();
101
97
102
98
sqlite3_close ( db );
103
99
@@ -135,18 +131,16 @@ bool QgsOfflineEditing::isOfflineProject()
135
131
return !QgsProject::instance ()->readEntry ( PROJECT_ENTRY_SCOPE_OFFLINE, PROJECT_ENTRY_KEY_OFFLINE_DB_PATH ).isEmpty ();
136
132
}
137
133
138
- void QgsOfflineEditing::synchronize ( QgsLegendInterface* legendInterface )
134
+ void QgsOfflineEditing::synchronize ()
139
135
{
140
- Q_UNUSED ( legendInterface );
141
136
// open logging db
142
137
sqlite3* db = openLoggingDb ();
143
138
if ( db == NULL )
144
139
{
145
140
return ;
146
141
}
147
142
148
- mProgressDialog ->setTitle ( " Synchronizing to remote layers" );
149
- mProgressDialog ->show ();
143
+ emit progressStarted ();
150
144
151
145
// restore and sync remote layers
152
146
QList<QgsMapLayer*> offlineLayers;
@@ -164,7 +158,7 @@ void QgsOfflineEditing::synchronize( QgsLegendInterface* legendInterface )
164
158
{
165
159
QgsMapLayer* layer = offlineLayers[l];
166
160
167
- mProgressDialog -> setCurrentLayer ( l + 1 , offlineLayers.count () );
161
+ emit layerProgressUpdated ( l + 1 , offlineLayers.count () );
168
162
169
163
QString remoteSource = layer->customProperty ( CUSTOM_PROPERTY_REMOTE_SOURCE, " " ).toString ();
170
164
QString remoteProvider = layer->customProperty ( CUSTOM_PROPERTY_REMOTE_PROVIDER, " " ).toString ();
@@ -246,7 +240,7 @@ void QgsOfflineEditing::synchronize( QgsLegendInterface* legendInterface )
246
240
}
247
241
}
248
242
249
- mProgressDialog -> hide ();
243
+ emit progressStopped ();
250
244
251
245
sqlite3_close ( db );
252
246
}
@@ -517,7 +511,7 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
517
511
518
512
layer->select ( layer->pendingAllAttributesList (), QgsRectangle (), true , false );
519
513
520
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m features copied " ) , layer->featureCount () );
514
+ emit progressModeSet ( QgsOfflineEditing::CopyFeatures , layer->featureCount () );
521
515
int featureCount = 1 ;
522
516
523
517
QList<QgsFeatureId> remoteFeatureIds;
@@ -538,11 +532,11 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
538
532
539
533
newLayer->addFeature ( f, false );
540
534
541
- mProgressDialog -> setProgressValue ( featureCount++ );
535
+ emit progressUpdated ( featureCount++ );
542
536
}
543
537
if ( newLayer->commitChanges () )
544
538
{
545
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m features processed " ) , layer->featureCount () );
539
+ emit progressModeSet ( QgsOfflineEditing::ProcessFeatures , layer->featureCount () );
546
540
featureCount = 1 ;
547
541
548
542
// update feature id lookup
@@ -560,7 +554,7 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
560
554
{
561
555
addFidLookup ( db, layerId, offlineFeatureIds.at ( i ), remoteFeatureIds.at ( i ) );
562
556
563
- mProgressDialog -> setProgressValue ( featureCount++ );
557
+ emit progressUpdated ( featureCount++ );
564
558
}
565
559
sqlExec ( db, " COMMIT" );
566
560
}
@@ -592,7 +586,7 @@ void QgsOfflineEditing::applyAttributesAdded( QgsVectorLayer* remoteLayer, sqlit
592
586
typeNameLookup[ nativeType.mType ] = nativeType.mTypeName ;
593
587
}
594
588
595
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m fields added " ) , fields.size () );
589
+ emit progressModeSet ( QgsOfflineEditing::AddFields , fields.size () );
596
590
597
591
for ( int i = 0 ; i < fields.size (); i++ )
598
592
{
@@ -609,7 +603,7 @@ void QgsOfflineEditing::applyAttributesAdded( QgsVectorLayer* remoteLayer, sqlit
609
603
showWarning ( QString ( " Could not add attribute '%1' of type %2" ).arg ( field.name () ).arg ( field.type () ) );
610
604
}
611
605
612
- mProgressDialog -> setProgressValue ( i + 1 );
606
+ emit progressUpdated ( i + 1 );
613
607
}
614
608
}
615
609
@@ -630,7 +624,7 @@ void QgsOfflineEditing::applyFeaturesAdded( QgsVectorLayer* offlineLayer, QgsVec
630
624
}
631
625
632
626
// copy features to remote layer
633
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m features added " ) , features.size () );
627
+ emit progressModeSet ( QgsOfflineEditing::AddFeatures , features.size () );
634
628
635
629
int i = 1 ;
636
630
for ( QgsFeatureList::iterator it = features.begin (); it != features.end (); ++it )
@@ -650,7 +644,7 @@ void QgsOfflineEditing::applyFeaturesAdded( QgsVectorLayer* offlineLayer, QgsVec
650
644
651
645
remoteLayer->addFeature ( f, false );
652
646
653
- mProgressDialog -> setProgressValue ( i++ );
647
+ emit progressUpdated ( i++ );
654
648
}
655
649
}
656
650
@@ -659,15 +653,15 @@ void QgsOfflineEditing::applyFeaturesRemoved( QgsVectorLayer* remoteLayer, sqlit
659
653
QString sql = QString ( " SELECT \" fid\" FROM 'log_removed_features' WHERE \" layer_id\" = %1" ).arg ( layerId );
660
654
QgsFeatureIds values = sqlQueryFeaturesRemoved ( db, sql );
661
655
662
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m features removed " ) , values.size () );
656
+ emit progressModeSet ( QgsOfflineEditing::RemoveFeatures , values.size () );
663
657
664
658
int i = 1 ;
665
659
for ( QgsFeatureIds::const_iterator it = values.begin (); it != values.end (); ++it )
666
660
{
667
661
QgsFeatureId fid = remoteFid ( db, layerId, *it );
668
662
remoteLayer->deleteFeature ( fid );
669
663
670
- mProgressDialog -> setProgressValue ( i++ );
664
+ emit progressUpdated ( i++ );
671
665
}
672
666
}
673
667
@@ -676,7 +670,7 @@ void QgsOfflineEditing::applyAttributeValueChanges( QgsVectorLayer* offlineLayer
676
670
QString sql = QString ( " SELECT \" fid\" , \" attr\" , \" value\" FROM 'log_feature_updates' WHERE \" layer_id\" = %1 AND \" commit_no\" = %2 " ).arg ( layerId ).arg ( commitNo );
677
671
AttributeValueChanges values = sqlQueryAttributeValueChanges ( db, sql );
678
672
679
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m feature updates " ) , values.size () );
673
+ emit progressModeSet ( QgsOfflineEditing::UpdateFeatures , values.size () );
680
674
681
675
QMap<int , int > attrLookup = attributeLookup ( offlineLayer, remoteLayer );
682
676
@@ -686,7 +680,7 @@ void QgsOfflineEditing::applyAttributeValueChanges( QgsVectorLayer* offlineLayer
686
680
687
681
remoteLayer->changeAttributeValue ( fid, attrLookup[ values.at ( i ).attr ], values.at ( i ).value , false );
688
682
689
- mProgressDialog -> setProgressValue ( i + 1 );
683
+ emit progressUpdated ( i + 1 );
690
684
}
691
685
}
692
686
@@ -695,14 +689,14 @@ void QgsOfflineEditing::applyGeometryChanges( QgsVectorLayer* remoteLayer, sqlit
695
689
QString sql = QString ( " SELECT \" fid\" , \" geom_wkt\" FROM 'log_geometry_updates' WHERE \" layer_id\" = %1 AND \" commit_no\" = %2" ).arg ( layerId ).arg ( commitNo );
696
690
GeometryChanges values = sqlQueryGeometryChanges ( db, sql );
697
691
698
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m feature geometry updates " ) , values.size () );
692
+ emit progressModeSet ( QgsOfflineEditing::UpdateGeometries , values.size () );
699
693
700
694
for ( int i = 0 ; i < values.size (); i++ )
701
695
{
702
696
QgsFeatureId fid = remoteFid ( db, layerId, values.at ( i ).fid );
703
697
remoteLayer->changeGeometry ( fid, QgsGeometry::fromWkt ( values.at ( i ).geom_wkt ) );
704
698
705
- mProgressDialog -> setProgressValue ( i + 1 );
699
+ emit progressUpdated ( i + 1 );
706
700
}
707
701
}
708
702
@@ -716,7 +710,7 @@ void QgsOfflineEditing::updateFidLookup( QgsVectorLayer* remoteLayer, sqlite3* d
716
710
QgsFeature f;
717
711
remoteLayer->select ( QgsAttributeList (), QgsRectangle (), false , false );
718
712
719
- mProgressDialog -> setupProgressBar ( tr ( " %v / %m features processed " ) , remoteLayer->featureCount () );
713
+ emit progressModeSet ( QgsOfflineEditing::ProcessFeatures , remoteLayer->featureCount () );
720
714
721
715
int i = 1 ;
722
716
while ( remoteLayer->nextFeature ( f ) )
@@ -726,7 +720,7 @@ void QgsOfflineEditing::updateFidLookup( QgsVectorLayer* remoteLayer, sqlite3* d
726
720
newRemoteFids[ f.id ()] = true ;
727
721
}
728
722
729
- mProgressDialog -> setProgressValue ( i++ );
723
+ emit progressUpdated ( i++ );
730
724
}
731
725
732
726
// get local added fids
0 commit comments