|
27 | 27 | #include "qgssettings.h"
|
28 | 28 | #include "qgsgui.h"
|
29 | 29 | #include "qgsstylemodel.h"
|
| 30 | +#include "qgsstylemanagerdialog.h" |
30 | 31 |
|
31 | 32 | #include <QInputDialog>
|
32 | 33 | #include <QCloseEvent>
|
@@ -210,158 +211,22 @@ bool QgsStyleExportImportDialog::populateStyles()
|
210 | 211 |
|
211 | 212 | void QgsStyleExportImportDialog::moveStyles( QModelIndexList *selection, QgsStyle *src, QgsStyle *dst )
|
212 | 213 | {
|
213 |
| - QString symbolName; |
214 |
| - QStringList symbolTags; |
215 |
| - bool symbolFavorite; |
216 |
| - QModelIndex index; |
217 |
| - bool isSymbol = true; |
218 |
| - bool prompt = true; |
219 |
| - bool overwrite = true; |
220 |
| - |
221 |
| - QStringList importTags = mSymbolTags->text().split( ',' ); |
222 |
| - |
223 |
| - QStringList favoriteSymbols = src->symbolsOfFavorite( QgsStyle::SymbolEntity ); |
224 |
| - QStringList favoriteColorramps = src->symbolsOfFavorite( QgsStyle::ColorrampEntity ); |
225 |
| - |
| 214 | + QList< QgsStyleManagerDialog::ItemDetails > items; |
| 215 | + items.reserve( selection->size() ); |
226 | 216 | for ( int i = 0; i < selection->size(); ++i )
|
227 | 217 | {
|
228 |
| - index = selection->at( i ); |
229 |
| - symbolName = mModel->data( mModel->index( index.row(), QgsStyleModel::Name ), Qt::DisplayRole ).toString(); |
230 |
| - std::unique_ptr< QgsSymbol > symbol( src->symbol( symbolName ) ); |
231 |
| - std::unique_ptr< QgsColorRamp > ramp; |
232 |
| - |
233 |
| - if ( !mIgnoreXMLTags->isChecked() ) |
234 |
| - { |
235 |
| - symbolTags = src->tagsOfSymbol( !symbol ? QgsStyle::ColorrampEntity : QgsStyle::SymbolEntity, symbolName ); |
236 |
| - } |
237 |
| - else |
238 |
| - { |
239 |
| - symbolTags.clear(); |
240 |
| - } |
241 |
| - |
242 |
| - if ( mDialogMode == Import ) |
243 |
| - { |
244 |
| - symbolTags << importTags; |
245 |
| - symbolFavorite = mFavorite->isChecked(); |
246 |
| - } |
247 |
| - else |
248 |
| - { |
249 |
| - symbolFavorite = !symbol ? favoriteColorramps.contains( symbolName ) : favoriteSymbols.contains( symbolName ); |
250 |
| - } |
| 218 | + QModelIndex index = selection->at( i ); |
251 | 219 |
|
252 |
| - if ( !symbol ) |
253 |
| - { |
254 |
| - isSymbol = false; |
255 |
| - ramp.reset( src->colorRamp( symbolName ) ); |
256 |
| - } |
| 220 | + QgsStyleManagerDialog::ItemDetails details; |
| 221 | + details.entityType = static_cast< QgsStyle::StyleEntity >( mModel->data( index, QgsStyleModel::TypeRole ).toInt() ); |
| 222 | + if ( details.entityType == QgsStyle::SymbolEntity ) |
| 223 | + details.symbolType = static_cast< QgsSymbol::SymbolType >( mModel->data( index, QgsStyleModel::SymbolTypeRole ).toInt() ); |
| 224 | + details.name = mModel->data( mModel->index( index.row(), QgsStyleModel::Name, index.parent() ), Qt::DisplayRole ).toString(); |
257 | 225 |
|
258 |
| - if ( isSymbol ) |
259 |
| - { |
260 |
| - if ( dst->symbolNames().contains( symbolName ) && prompt ) |
261 |
| - { |
262 |
| - mCursorOverride.reset(); |
263 |
| - int res = QMessageBox::warning( this, tr( "Export/import Symbols" ), |
264 |
| - tr( "Symbol with name '%1' already exists.\nOverwrite?" ) |
265 |
| - .arg( symbolName ), |
266 |
| - QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::No | QMessageBox::NoToAll | QMessageBox::Cancel ); |
267 |
| - mCursorOverride = qgis::make_unique< QgsTemporaryCursorOverride >( Qt::WaitCursor ); |
268 |
| - switch ( res ) |
269 |
| - { |
270 |
| - case QMessageBox::Cancel: |
271 |
| - return; |
272 |
| - case QMessageBox::No: |
273 |
| - continue; |
274 |
| - case QMessageBox::Yes: |
275 |
| - { |
276 |
| - QgsSymbol *newSymbol = symbol.get(); |
277 |
| - dst->addSymbol( symbolName, symbol.release() ); |
278 |
| - dst->saveSymbol( symbolName, newSymbol, symbolFavorite, symbolTags ); |
279 |
| - continue; |
280 |
| - } |
281 |
| - case QMessageBox::YesToAll: |
282 |
| - prompt = false; |
283 |
| - overwrite = true; |
284 |
| - break; |
285 |
| - case QMessageBox::NoToAll: |
286 |
| - prompt = false; |
287 |
| - overwrite = false; |
288 |
| - break; |
289 |
| - } |
290 |
| - } |
291 |
| - |
292 |
| - if ( dst->symbolNames().contains( symbolName ) && overwrite ) |
293 |
| - { |
294 |
| - QgsSymbol *newSymbol = symbol.get(); |
295 |
| - dst->addSymbol( symbolName, symbol.release() ); |
296 |
| - dst->saveSymbol( symbolName, newSymbol, symbolFavorite, symbolTags ); |
297 |
| - continue; |
298 |
| - } |
299 |
| - else if ( dst->symbolNames().contains( symbolName ) && !overwrite ) |
300 |
| - { |
301 |
| - continue; |
302 |
| - } |
303 |
| - else |
304 |
| - { |
305 |
| - QgsSymbol *newSymbol = symbol.get(); |
306 |
| - dst->addSymbol( symbolName, symbol.release() ); |
307 |
| - dst->saveSymbol( symbolName, newSymbol, symbolFavorite, symbolTags ); |
308 |
| - continue; |
309 |
| - } |
310 |
| - } |
311 |
| - else |
312 |
| - { |
313 |
| - if ( dst->colorRampNames().contains( symbolName ) && prompt ) |
314 |
| - { |
315 |
| - mCursorOverride.reset(); |
316 |
| - int res = QMessageBox::warning( this, tr( "Export/import Color Ramps" ), |
317 |
| - tr( "Color ramp with name '%1' already exists.\nOverwrite?" ) |
318 |
| - .arg( symbolName ), |
319 |
| - QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::No | QMessageBox::NoToAll | QMessageBox::Cancel ); |
320 |
| - mCursorOverride = qgis::make_unique< QgsTemporaryCursorOverride >( Qt::WaitCursor ); |
321 |
| - switch ( res ) |
322 |
| - { |
323 |
| - case QMessageBox::Cancel: |
324 |
| - return; |
325 |
| - case QMessageBox::No: |
326 |
| - continue; |
327 |
| - case QMessageBox::Yes: |
328 |
| - { |
329 |
| - QgsColorRamp *newRamp = ramp.get(); |
330 |
| - dst->addColorRamp( symbolName, ramp.release() ); |
331 |
| - dst->saveColorRamp( symbolName, newRamp, symbolFavorite, symbolTags ); |
332 |
| - continue; |
333 |
| - } |
334 |
| - case QMessageBox::YesToAll: |
335 |
| - prompt = false; |
336 |
| - overwrite = true; |
337 |
| - break; |
338 |
| - case QMessageBox::NoToAll: |
339 |
| - prompt = false; |
340 |
| - overwrite = false; |
341 |
| - break; |
342 |
| - } |
343 |
| - } |
344 |
| - |
345 |
| - if ( dst->colorRampNames().contains( symbolName ) && overwrite ) |
346 |
| - { |
347 |
| - QgsColorRamp *newRamp = ramp.get(); |
348 |
| - dst->addColorRamp( symbolName, ramp.release() ); |
349 |
| - dst->saveColorRamp( symbolName, newRamp, symbolFavorite, symbolTags ); |
350 |
| - continue; |
351 |
| - } |
352 |
| - else if ( dst->colorRampNames().contains( symbolName ) && !overwrite ) |
353 |
| - { |
354 |
| - continue; |
355 |
| - } |
356 |
| - else |
357 |
| - { |
358 |
| - QgsColorRamp *newRamp = ramp.get(); |
359 |
| - dst->addColorRamp( symbolName, ramp.release() ); |
360 |
| - dst->saveColorRamp( symbolName, newRamp, symbolFavorite, symbolTags ); |
361 |
| - continue; |
362 |
| - } |
363 |
| - } |
| 226 | + items << details; |
364 | 227 | }
|
| 228 | + QgsStyleManagerDialog::copyItems( items, src, dst, this, mCursorOverride, mDialogMode == Import, |
| 229 | + mSymbolTags->text().split( ',' ), mFavorite->isChecked(), mIgnoreXMLTags->isChecked() ); |
365 | 230 | }
|
366 | 231 |
|
367 | 232 | QgsStyleExportImportDialog::~QgsStyleExportImportDialog()
|
|
0 commit comments