mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Allow QgsVectorFileWriter to report approx progress
This commit is contained in:
parent
8182ec2d3d
commit
c42f1ec7f5
@ -2424,6 +2424,9 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
|
||||
writer->mFields = layer->fields();
|
||||
|
||||
// write all features
|
||||
long saved = 0;
|
||||
long total = options.onlySelectedFeatures ? layer->selectedFeatureCount() : layer->featureCount();
|
||||
int lastProgressReport = 0;
|
||||
while ( fit.nextFeature( fet ) )
|
||||
{
|
||||
if ( options.feedback && options.feedback->isCanceled() )
|
||||
@ -2432,6 +2435,18 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
|
||||
return Canceled;
|
||||
}
|
||||
|
||||
saved++;
|
||||
if ( options.feedback )
|
||||
{
|
||||
//avoid spamming progress reports
|
||||
int newProgress = ( 100.0 * saved ) / total;
|
||||
if ( newProgress < 100 && newProgress != lastProgressReport )
|
||||
{
|
||||
lastProgressReport = newProgress;
|
||||
options.feedback->setProgress( lastProgressReport );
|
||||
}
|
||||
}
|
||||
|
||||
if ( shallTransform )
|
||||
{
|
||||
try
|
||||
|
@ -44,6 +44,8 @@ bool QgsVectorFileWriterTask::run()
|
||||
if ( !mLayer )
|
||||
return false;
|
||||
|
||||
connect( mOptions.feedback, &QgsFeedback::progressChanged, this, &QgsVectorFileWriterTask::setProgress );
|
||||
|
||||
mError = QgsVectorFileWriter::writeAsVectorFormat(
|
||||
mLayer, mDestFileName, mOptions, &mNewFilename, &mErrorMessage );
|
||||
return mError == QgsVectorFileWriter::NoError;
|
||||
|
Loading…
x
Reference in New Issue
Block a user