19 #include <QPushButton>    20 #include <QRegExpValidator>    21 #include <QSizePolicy>    27                                     const QStringList &extensions, 
const QStringList &existing,
    28                                     const QRegExp ®exp, Qt::CaseSensitivity cs,
    29                                     QWidget *parent, Qt::WindowFlags flags )
    30   : 
QgsDialog( parent, flags, QDialogButtonBox::Ok | QDialogButtonBox::Cancel )
    31   , mExiting( existing )
    32   , mExtensions( extensions )
    33   , mCaseSensitivity( cs )
    36   setWindowTitle( tr( 
"New Name" ) );
    38   layout()->setSizeConstraint( QLayout::SetMinimumSize );
    42   QString nameDesc = 
mExtensions.isEmpty() ? tr( 
"name" ) : tr( 
"base name" );
    43   if ( source.isEmpty() )
    45     hintString = tr( 
"Enter new %1" ).arg( nameDesc );
    49     hintString = tr( 
"Enter new %1 for %2" ).arg( nameDesc, source );
    54   mLineEdit = 
new QLineEdit( initial, 
this );
    55   if ( !regexp.isEmpty() )
    57     QRegExpValidator *validator = 
new QRegExpValidator( regexp, 
this );
    60   mLineEdit->setMinimumWidth( 
mLineEdit->fontMetrics().width( QStringLiteral( 
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) ) );
    65   mNamesLabel = 
new QLabel( QStringLiteral( 
" " ), 
this );
    66   mNamesLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
    73   mErrorLabel = 
new QLabel( QStringLiteral( 
" " ), 
this );
    74   mErrorLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
   108   return "<b>" + text + 
"</b>";
   114   QString namesString = tr( 
"Full names" ) + 
": ";
   120   QPushButton *okButton = 
buttonBox()->button( QDialogButtonBox::Ok );
   122   okButton->setEnabled( 
true );
   124   QString newName = 
name();
   126   if ( newName.length() == 0 || ( !
mRegexp.isEmpty() && !
mRegexp.exactMatch( newName ) ) )
   129     okButton->setEnabled( 
false );
   136     namesString += 
' ' + newNames.join( QStringLiteral( 
", " ) );
   142   if ( !conflicts.isEmpty() )
   145                       : tr( 
"%n Name(s) %1 exists", 
nullptr, conflicts.size() ).arg( conflicts.join( QStringLiteral( 
", " ) ) );
   149       okButton->setText( tr( 
"Overwrite" ) );
   153       okButton->setEnabled( 
false );
   167   Q_FOREACH ( 
const QString &ext, extensions )
   172   if ( list.isEmpty() )
   180                                         Qt::CaseSensitivity cs )
   184   Q_FOREACH ( 
const QString &newName, newNames )
   186     Q_FOREACH ( 
const QString &existingName, existingNames )
   188       if ( existingName.compare( newName, cs ) == 0 )
   190         list << existingName;
   198                                const QStringList &existing, Qt::CaseSensitivity cs )
   200   QStringList newNames = 
fullNames( name, extensions );
   201   QStringList conflicts = 
matching( newNames, existing, cs );
   202   return !conflicts.isEmpty();
 
A generic dialog with layout and button box. 
 
QDialogButtonBox * buttonBox()
Returns the button box. 
 
QVBoxLayout * layout()
Returns the central layout. Widgets added to it must have this dialog as parent.