QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
qgsvectorfilewritertask.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsvectorfilewritertask.cpp
3
---------------------------
4
begin : Feb 2017
5
copyright : (C) 2017 by Nyall Dawson
6
email : nyall dot dawson at gmail dot com
7
***************************************************************************/
8
9
/***************************************************************************
10
* *
11
* This program is free software; you can redistribute it and/or modify *
12
* it under the terms of the GNU General Public License as published by *
13
* the Free Software Foundation; either version 2 of the License, or *
14
* (at your option) any later version. *
15
* *
16
***************************************************************************/
17
18
#include "
qgsvectorfilewritertask.h
"
19
20
#include <memory>
21
22
#include "
qgsvectorlayer.h
"
23
24
#include "moc_qgsvectorfilewritertask.cpp"
25
26
QgsVectorFileWriterTask::QgsVectorFileWriterTask
(
QgsVectorLayer
*layer,
const
QString &fileName,
const
QgsVectorFileWriter::SaveVectorOptions
&options,
QgsFeatureSink::SinkFlags
sinkFlags )
27
:
QgsTask
( tr(
"Saving %1"
).arg( fileName ),
QgsTask
::
CanCancel
)
28
, mDestFileName( fileName )
29
, mSinkFlags( sinkFlags )
30
, mOptions( options )
31
{
32
if
( mOptions.fieldValueConverter )
33
{
34
// fieldValueConverter is not owned - so we need to clone it here
35
// to ensure it exists for lifetime of task
36
mFieldValueConverter.reset( mOptions.fieldValueConverter->clone() );
37
mOptions.fieldValueConverter = mFieldValueConverter.get();
38
}
39
if ( !mOptions.feedback )
40
{
41
mOwnedFeedback = std::make_unique<QgsFeedback>();
42
mOptions.feedback = mOwnedFeedback.get();
43
}
44
45
if ( layer )
46
{
47
mTransformContext = layer->
transformContext
();
48
}
49
50
mError = QgsVectorFileWriter::prepareWriteAsVectorFormat( layer, mOptions, mWriterDetails );
51
}
52
53
void
QgsVectorFileWriterTask::cancel
()
54
{
55
mOptions.feedback->cancel();
56
QgsTask::cancel
();
57
}
58
59
bool
QgsVectorFileWriterTask::run
()
60
{
61
if
( mError !=
QgsVectorFileWriter::NoError
)
62
return
false
;
63
64
connect( mOptions.feedback, &
QgsFeedback::progressChanged
,
this
, &
QgsVectorFileWriterTask::setProgress
);
65
66
67
mError =
QgsVectorFileWriter::writeAsVectorFormatV2
( mWriterDetails, mDestFileName, mTransformContext, mOptions, &mNewFilename, &mNewLayer, &mErrorMessage, mSinkFlags );
68
return
mError ==
QgsVectorFileWriter::NoError
;
69
}
70
71
void
QgsVectorFileWriterTask::finished
(
bool
result )
72
{
73
if
( result )
74
{
75
emit
writeComplete
( mNewFilename );
76
emit
completed
( mNewFilename, mNewLayer );
77
}
78
else
79
{
80
emit
errorOccurred
( mError, mErrorMessage );
81
}
82
}
QgsFeatureSink::SinkFlags
QFlags< SinkFlag > SinkFlags
Definition
qgsfeaturesink.h:55
QgsFeedback::progressChanged
void progressChanged(double progress)
Emitted when the feedback object reports a progress change.
QgsMapLayer::transformContext
QgsCoordinateTransformContext transformContext() const
Returns the layer data provider coordinate transform context or a default transform context if the la...
Definition
qgsmaplayer.cpp:1420
QgsTask::cancel
virtual void cancel()
Notifies the task that it should terminate.
Definition
qgstaskmanager.cpp:98
QgsTask::QgsTask
QgsTask(const QString &description=QString(), QgsTask::Flags flags=AllFlags)
Constructor for QgsTask.
Definition
qgstaskmanager.cpp:36
QgsTask::CanCancel
@ CanCancel
Task can be canceled.
Definition
qgstaskmanager.h:73
QgsTask::setProgress
void setProgress(double progress)
Sets the task's current progress.
Definition
qgstaskmanager.cpp:239
QgsVectorFileWriterTask::errorOccurred
void errorOccurred(int error, const QString &errorMessage)
Emitted when an error occurs which prevented the file being written (or if the task is canceled).
QgsVectorFileWriterTask::run
bool run() override
Performs the task's operation.
Definition
qgsvectorfilewritertask.cpp:59
QgsVectorFileWriterTask::completed
void completed(const QString &newFilename, const QString &newLayer)
Emitted when writing the layer is successfully completed.
QgsVectorFileWriterTask::writeComplete
void writeComplete(const QString &newFilename)
Emitted when writing the layer is successfully completed.
QgsVectorFileWriterTask::finished
void finished(bool result) override
If the task is managed by a QgsTaskManager, this will be called after the task has finished (whether ...
Definition
qgsvectorfilewritertask.cpp:71
QgsVectorFileWriterTask::QgsVectorFileWriterTask
QgsVectorFileWriterTask(QgsVectorLayer *layer, const QString &fileName, const QgsVectorFileWriter::SaveVectorOptions &options, QgsFeatureSink::SinkFlags sinkFlags=QgsFeatureSink::SinkFlags())
Constructor for QgsVectorFileWriterTask.
Definition
qgsvectorfilewritertask.cpp:26
QgsVectorFileWriterTask::cancel
void cancel() override
Notifies the task that it should terminate.
Definition
qgsvectorfilewritertask.cpp:53
QgsVectorFileWriter::SaveVectorOptions
Options to pass to QgsVectorFileWriter::writeAsVectorFormat().
Definition
qgsvectorfilewriter.h:476
QgsVectorFileWriter::NoError
@ NoError
Definition
qgsvectorfilewriter.h:191
QgsVectorFileWriter::writeAsVectorFormatV2
static Q_DECL_DEPRECATED QgsVectorFileWriter::WriterError writeAsVectorFormatV2(QgsVectorLayer *layer, const QString &fileName, const QgsCoordinateTransformContext &transformContext, const QgsVectorFileWriter::SaveVectorOptions &options, QString *newFilename=nullptr, QString *newLayer=nullptr, QString *errorMessage=nullptr)
Writes a layer out to a vector file.
Definition
qgsvectorfilewriter.cpp:4074
QgsVectorLayer
Represents a vector layer which manages a vector based dataset.
Definition
qgsvectorlayer.h:414
qgsvectorfilewritertask.h
qgsvectorlayer.h
Generated on
for QGIS API Documentation by
1.17.0