@@ -41,6 +41,8 @@ QgsComposerManager::QgsComposerManager( QWidget * parent, Qt::WindowFlags f ): Q
41
41
QSettings settings;
42
42
restoreGeometry ( settings.value ( " /Windows/ComposerManager/geometry" ).toByteArray () );
43
43
44
+ mComposerListWidget ->setItemDelegate ( new QgsComposerNameDelegate ( mComposerListWidget ) );
45
+
44
46
connect ( mButtonBox , SIGNAL ( rejected () ), this , SLOT ( close () ) );
45
47
connect ( QgisApp::instance (), SIGNAL ( composerAdded ( QgsComposerView* ) ), this , SLOT ( refreshComposers () ) );
46
48
connect ( QgisApp::instance (), SIGNAL ( composerRemoved ( QgsComposerView* ) ), this , SLOT ( refreshComposers () ) );
@@ -487,3 +489,61 @@ void QgsComposerManager::on_mComposerListWidget_itemChanged( QListWidgetItem * i
487
489
}
488
490
mComposerListWidget ->sortItems ();
489
491
}
492
+
493
+
494
+ //
495
+ // QgsComposerNameDelegate
496
+ //
497
+
498
+ QgsComposerNameDelegate::QgsComposerNameDelegate ( QObject *parent )
499
+ : QItemDelegate( parent )
500
+ {
501
+
502
+ }
503
+
504
+ QWidget *QgsComposerNameDelegate::createEditor ( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const
505
+ {
506
+ Q_UNUSED ( option );
507
+ Q_UNUSED ( index );
508
+
509
+ // create a line edit
510
+ QLineEdit *lineEdit = new QLineEdit ( parent );
511
+ return lineEdit;
512
+ }
513
+
514
+ void QgsComposerNameDelegate::setEditorData ( QWidget *editor, const QModelIndex &index ) const
515
+ {
516
+ QString text = index.model ()->data ( index, Qt::EditRole ).toString ();
517
+ QLineEdit *lineEdit = static_cast <QLineEdit*>( editor );
518
+ lineEdit->setText ( text );
519
+ }
520
+
521
+ void QgsComposerNameDelegate::setModelData ( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const
522
+ {
523
+ QLineEdit *lineEdit = static_cast <QLineEdit*>( editor );
524
+ QString value = lineEdit->text ();
525
+
526
+ // has name changed?
527
+ bool changed = model->data ( index, Qt::EditRole ).toString () != value;
528
+
529
+ // check if name already exists
530
+ QStringList cNames;
531
+ foreach ( QgsComposer* c, QgisApp::instance ()->printComposers () )
532
+ {
533
+ cNames << c->title ();
534
+ }
535
+ if ( changed && cNames.contains ( value ) )
536
+ {
537
+ // name exists!
538
+ QMessageBox::warning ( 0 , tr ( " Rename composer" ), tr ( " There is already a composer named \" %1\" " ).arg ( value ) );
539
+ return ;
540
+ }
541
+
542
+ model->setData ( index, QVariant ( value ), Qt::EditRole );
543
+ }
544
+
545
+ void QgsComposerNameDelegate::updateEditorGeometry ( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const
546
+ {
547
+ Q_UNUSED ( index );
548
+ editor->setGeometry ( option.rect );
549
+ }
0 commit comments