Skip to content

Commit c42f1ec

Browse files
committedFeb 12, 2017
Allow QgsVectorFileWriter to report approx progress
1 parent 8182ec2 commit c42f1ec

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed
 

‎src/core/qgsvectorfilewriter.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2424,6 +2424,9 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
24242424
writer->mFields = layer->fields();
24252425

24262426
// write all features
2427+
long saved = 0;
2428+
long total = options.onlySelectedFeatures ? layer->selectedFeatureCount() : layer->featureCount();
2429+
int lastProgressReport = 0;
24272430
while ( fit.nextFeature( fet ) )
24282431
{
24292432
if ( options.feedback && options.feedback->isCanceled() )
@@ -2432,6 +2435,18 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
24322435
return Canceled;
24332436
}
24342437

2438+
saved++;
2439+
if ( options.feedback )
2440+
{
2441+
//avoid spamming progress reports
2442+
int newProgress = ( 100.0 * saved ) / total;
2443+
if ( newProgress < 100 && newProgress != lastProgressReport )
2444+
{
2445+
lastProgressReport = newProgress;
2446+
options.feedback->setProgress( lastProgressReport );
2447+
}
2448+
}
2449+
24352450
if ( shallTransform )
24362451
{
24372452
try

‎src/core/qgsvectorfilewritertask.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ bool QgsVectorFileWriterTask::run()
4444
if ( !mLayer )
4545
return false;
4646

47+
connect( mOptions.feedback, &QgsFeedback::progressChanged, this, &QgsVectorFileWriterTask::setProgress );
48+
4749
mError = QgsVectorFileWriter::writeAsVectorFormat(
4850
mLayer, mDestFileName, mOptions, &mNewFilename, &mErrorMessage );
4951
return mError == QgsVectorFileWriter::NoError;

0 commit comments

Comments
 (0)
Please sign in to comment.