@@ -68,6 +68,16 @@ QgsPackageAlgorithm *QgsPackageAlgorithm::createInstance() const
6868 return new QgsPackageAlgorithm ();
6969}
7070
71+ bool QgsPackageAlgorithm::prepareAlgorithm ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
72+ {
73+ const QList< QgsMapLayer * > layers = parameterAsLayerList ( parameters, QStringLiteral ( " LAYERS" ), context );
74+ for ( QgsMapLayer *layer : layers )
75+ {
76+ mLayers .emplace_back ( layer->clone () );
77+ }
78+ return true ;
79+ }
80+
7181QVariantMap QgsPackageAlgorithm::processAlgorithm ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
7282{
7383 const bool overwrite = parameterAsBoolean ( parameters, QStringLiteral ( " OVERWRITE" ), context );
@@ -97,22 +107,19 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap ¶meters
97107 throw QgsProcessingException ( QObject::tr ( " Creation of database failed (OGR error: %1)" ).arg ( QString::fromUtf8 ( CPLGetLastErrorMsg () ) ) );
98108
99109 bool errored = false ;
100- const QList< QgsMapLayer * > layers = parameterAsLayerList ( parameters, QStringLiteral ( " LAYERS" ), context );
101110
102- QgsProcessingMultiStepFeedback multiStepFeedback ( layers. count (), feedback );
111+ QgsProcessingMultiStepFeedback multiStepFeedback ( mLayers . size (), feedback );
103112
104113 QStringList outputLayers;
105114 int i = 0 ;
106- for ( QgsMapLayer * layer : layers )
115+ for ( const auto & layer : mLayers )
107116 {
108117 if ( feedback->isCanceled () )
109118 break ;
110119
111120 multiStepFeedback.setCurrentStep ( i );
112121 i++;
113122
114- feedback->pushInfo ( QObject::tr ( " Packaging layer %1/%2: %3" ).arg ( i ).arg ( layers.count () ).arg ( layer ? layer->name () : QString () ) );
115-
116123 if ( !layer )
117124 {
118125 // don't throw immediately - instead do what we can and error out later
@@ -121,11 +128,13 @@ QVariantMap QgsPackageAlgorithm::processAlgorithm( const QVariantMap ¶meters
121128 continue ;
122129 }
123130
131+ feedback->pushInfo ( QObject::tr ( " Packaging layer %1/%2: %3" ).arg ( i ).arg ( mLayers .size () ).arg ( layer ? layer->name () : QString () ) );
132+
124133 switch ( layer->type () )
125134 {
126135 case QgsMapLayerType::VectorLayer:
127136 {
128- if ( !packageVectorLayer ( qobject_cast< QgsVectorLayer * >( layer ), packagePath,
137+ if ( !packageVectorLayer ( qobject_cast< QgsVectorLayer * >( layer. get () ), packagePath,
129138 context, &multiStepFeedback, saveStyles ) )
130139 errored = true ;
131140 else
0 commit comments