Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsvectorfilewritertask.h 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 : : #ifndef QGSVECTORFILEWRITERTASK_H 19 : : #define QGSVECTORFILEWRITERTASK_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgsvectorfilewriter.h" 23 : : #include "qgstaskmanager.h" 24 : : 25 : : /** 26 : : * \class QgsVectorFileWriterTask 27 : : * \ingroup core 28 : : * \brief QgsTask task which performs a QgsVectorFileWriter layer saving operation as a background 29 : : * task. This can be used to save a vector layer out to a file without blocking the 30 : : * QGIS interface. 31 : : * \see QgsVectorLayerExporterTask 32 : : * \see QgsRasterFileWriterTask 33 : : * \since QGIS 3.0 34 : : */ 35 : : class CORE_EXPORT QgsVectorFileWriterTask : public QgsTask 36 : : { 37 : 0 : Q_OBJECT 38 : : 39 : : public: 40 : : 41 : : /** 42 : : * Constructor for QgsVectorFileWriterTask. Takes a source \a layer, destination \a fileName 43 : : * and save \a options. 44 : : */ 45 : : QgsVectorFileWriterTask( QgsVectorLayer *layer, 46 : : const QString &fileName, 47 : : const QgsVectorFileWriter::SaveVectorOptions &options ); 48 : : 49 : : void cancel() override; 50 : : 51 : : signals: 52 : : 53 : : /** 54 : : * Emitted when writing the layer is successfully completed. The \a newFilename 55 : : * parameter indicates the file path for the written file. 56 : : * \note this signal is deprecated in favor of completed(). 57 : : */ 58 : : void writeComplete( const QString &newFilename ); 59 : : 60 : : /** 61 : : * Emitted when writing the layer is successfully completed. The \a newFilename 62 : : * parameter indicates the file path for the written file. When applicable, the 63 : : * \a newLayer parameter indicates the layer name used. 64 : : */ 65 : : void completed( const QString &newFilename, const QString &newLayer ) SIP_SKIP; 66 : : 67 : : /** 68 : : * Emitted when an error occurs which prevented the file being written (or if 69 : : * the task is canceled). The writing \a error and \a errorMessage will be reported. 70 : : */ 71 : : void errorOccurred( int error, const QString &errorMessage ); 72 : : 73 : : protected: 74 : : 75 : : bool run() override; 76 : : void finished( bool result ) override; 77 : : 78 : : private: 79 : : 80 : : QString mDestFileName; 81 : : 82 : : std::unique_ptr< QgsFeedback > mOwnedFeedback; 83 : : QgsVectorFileWriter::WriterError mError = QgsVectorFileWriter::NoError; 84 : : 85 : : QString mNewFilename; 86 : : QString mNewLayer; 87 : : QString mErrorMessage; 88 : : 89 : : QgsVectorFileWriter::SaveVectorOptions mOptions; 90 : : QgsVectorFileWriter::PreparedWriterDetails mWriterDetails; 91 : : std::unique_ptr< QgsVectorFileWriter::FieldValueConverter > mFieldValueConverter; 92 : : 93 : : QgsCoordinateTransformContext mTransformContext; 94 : : }; 95 : : 96 : : #endif