@@ -56,6 +56,8 @@ QgsStyleExportImportDialog::QgsStyleExportImportDialog( QgsStyle* style, QWidget
5656 this , SLOT ( selectionChanged ( const QItemSelection&, const QItemSelection& ) ) );
5757
5858 mTempStyle = new QgsStyle ();
59+ mTempStyle ->createMemoryDB ();
60+
5961 // TODO validate
6062 mFileName = QLatin1String ( " " );
6163 mProgressDlg = nullptr ;
@@ -92,6 +94,7 @@ QgsStyleExportImportDialog::QgsStyleExportImportDialog( QgsStyle* style, QWidget
9294 locationLineEdit->setHidden ( true );
9395
9496 mFavorite ->setHidden ( true );
97+ mIgnoreXMLTags ->setHidden ( true );
9598
9699 pb = new QPushButton ( tr ( " Select by group" ) );
97100 buttonBox->addButton ( pb, QDialogButtonBox::ActionRole );
@@ -215,25 +218,44 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
215218{
216219 QString symbolName;
217220 QgsSymbol* symbol;
221+ QStringList symbolTags;
222+ bool symbolFavorite;
218223 QgsColorRamp *ramp = nullptr ;
219224 QModelIndex index;
220225 bool isSymbol = true ;
221226 bool prompt = true ;
222227 bool overwrite = true ;
223- QStringList tags;
224228
225- // get the groupid when going for import
226- if ( mDialogMode == Import )
227- {
228- // get the name the user entered
229- tags = mSymbolTags ->text ().split ( ' ,' );
230- }
229+ QStringList importTags = mSymbolTags ->text ().split ( ' ,' );
230+
231+ QStringList favoriteSymbols = src->symbolsOfFavorite ( QgsStyle::SymbolEntity );
232+ QStringList favoriteColorramps = src->symbolsOfFavorite ( QgsStyle::ColorrampEntity );
231233
232234 for ( int i = 0 ; i < selection->size (); ++i )
233235 {
234236 index = selection->at ( i );
235237 symbolName = index.model ()->data ( index, 0 ).toString ();
236238 symbol = src->symbol ( symbolName );
239+
240+ if ( !mIgnoreXMLTags ->isChecked () )
241+ {
242+ symbolTags = src->tagsOfSymbol ( !symbol ? QgsStyle::ColorrampEntity : QgsStyle::SymbolEntity, symbolName );
243+ }
244+ else
245+ {
246+ symbolTags.clear ();
247+ }
248+
249+ if ( mDialogMode == Import )
250+ {
251+ symbolTags << importTags;
252+ symbolFavorite = mFavorite ->isChecked ();
253+ }
254+ else
255+ {
256+ symbolFavorite = !symbol ? favoriteColorramps.contains ( symbolName ) : favoriteSymbols.contains ( symbolName );
257+ }
258+
237259 if ( !symbol )
238260 {
239261 isSymbol = false ;
@@ -256,8 +278,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
256278 continue ;
257279 case QMessageBox::Yes:
258280 dst->addSymbol ( symbolName, symbol );
259- if ( mDialogMode == Import )
260- dst->saveSymbol ( symbolName, symbol, mFavorite ->isChecked (), tags );
281+ dst->saveSymbol ( symbolName, symbol, symbolFavorite, symbolTags );
261282 continue ;
262283 case QMessageBox::YesToAll:
263284 prompt = false ;
@@ -273,8 +294,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
273294 if ( dst->symbolNames ().contains ( symbolName ) && overwrite )
274295 {
275296 dst->addSymbol ( symbolName, symbol );
276- if ( mDialogMode == Import )
277- dst->saveSymbol ( symbolName, symbol, mFavorite ->isChecked (), tags );
297+ dst->saveSymbol ( symbolName, symbol, symbolFavorite, symbolTags );
278298 }
279299 else if ( dst->symbolNames ().contains ( symbolName ) && !overwrite )
280300 {
@@ -283,8 +303,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
283303 else
284304 {
285305 dst->addSymbol ( symbolName, symbol );
286- if ( mDialogMode == Import )
287- dst->saveSymbol ( symbolName, symbol, mFavorite ->isChecked (), tags );
306+ dst->saveSymbol ( symbolName, symbol, symbolFavorite, symbolTags );
288307 }
289308 }
290309 else
@@ -303,8 +322,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
303322 continue ;
304323 case QMessageBox::Yes:
305324 dst->addColorRamp ( symbolName, ramp );
306- if ( mDialogMode == Import )
307- dst->saveColorRamp ( symbolName, ramp, mFavorite ->isChecked (), tags );
325+ dst->saveColorRamp ( symbolName, ramp, symbolFavorite, symbolTags );
308326 continue ;
309327 case QMessageBox::YesToAll:
310328 prompt = false ;
@@ -320,8 +338,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
320338 if ( dst->colorRampNames ().contains ( symbolName ) && overwrite )
321339 {
322340 dst->addColorRamp ( symbolName, ramp );
323- if ( mDialogMode == Import )
324- dst->saveColorRamp ( symbolName, ramp, mFavorite ->isChecked (), tags );
341+ dst->saveColorRamp ( symbolName, ramp, symbolFavorite, symbolTags );
325342 }
326343 else if ( dst->colorRampNames ().contains ( symbolName ) && !overwrite )
327344 {
@@ -330,8 +347,7 @@ void QgsStyleExportImportDialog::moveStyles( QModelIndexList* selection, QgsStyl
330347 else
331348 {
332349 dst->addColorRamp ( symbolName, ramp );
333- if ( mDialogMode == Import )
334- dst->saveColorRamp ( symbolName, ramp, mFavorite ->isChecked () , tags );
350+ dst->saveColorRamp ( symbolName, ramp, symbolFavorite, symbolTags );
335351 }
336352 }
337353 }
0 commit comments