20#include <QRegularExpressionValidator>
26#include "moc_qgsnewnamedialog.cpp"
28QgsNewNameDialog::QgsNewNameDialog(
const QString &source,
const QString &initial,
const QStringList &extensions,
const QStringList &existing, Qt::CaseSensitivity cs, QWidget *parent, Qt::WindowFlags flags )
29 :
QgsDialog( parent, flags, QDialogButtonBox::Ok | QDialogButtonBox::Cancel )
30 , mExiting( existing )
31 , mExtensions( extensions )
32 , mCaseSensitivity( cs )
34 setWindowTitle( tr(
"New Name" ) );
36 layout()->setSizeConstraint( QLayout::SetMinimumSize );
40 const QString nameDesc =
mExtensions.isEmpty() ? tr(
"name" ) : tr(
"base name" );
41 if ( source.isEmpty() )
43 hintString = tr(
"Enter new %1" ).arg( nameDesc );
47 hintString = tr(
"Enter new %1 for %2" ).arg( nameDesc, source );
52 mLineEdit =
new QLineEdit( initial,
this );
59 mNamesLabel =
new QLabel( QStringLiteral(
" " ),
this );
60 mNamesLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
67 mErrorLabel =
new QLabel( QStringLiteral(
" " ),
this );
68 mErrorLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
28QgsNewNameDialog::QgsNewNameDialog(
const QString &source,
const QString &initial,
const QStringList &extensions,
const QStringList &existing, Qt::CaseSensitivity cs, QWidget *parent, Qt::WindowFlags flags ) {
…}
108 if ( !expression.isEmpty() )
110 mRegularExpression = QRegularExpression( QRegularExpression::anchoredPattern( expression ) );
111 QRegularExpressionValidator *validator =
new QRegularExpressionValidator(
mRegularExpression,
this );
130 QCompleter *completer =
new QCompleter(
mExiting,
this );
131 completer->setCaseSensitivity( Qt::CaseInsensitive );
132 completer->setCompletionMode( QCompleter::UnfilteredPopupCompletion );
138 return "<b>" + text +
"</b>";
143 QString namesString = tr(
"Full names" ) +
": ";
149 QPushButton *okButton =
buttonBox()->button( QDialogButtonBox::Ok );
151 okButton->setEnabled(
true );
153 const QString newName =
name();
165 namesString +=
' ' + newNames.join( QLatin1String(
", " ) );
171 if ( !conflicts.isEmpty() )
174 : tr(
"%n Name(s) %1 exists",
nullptr, conflicts.size() ).arg( conflicts.join( QLatin1String(
", " ) ) );
178 okButton->setText( tr(
"Overwrite" ) );
182 okButton->setEnabled(
false );
196 const auto constExtensions = extensions;
197 for (
const QString &ext : constExtensions )
201 if ( list.isEmpty() )
212 const auto constNewNames = newNames;
213 for (
const QString &newName : constNewNames )
215 const auto constExistingNames = existingNames;
216 for (
const QString &existingName : constExistingNames )
218 if ( existingName.compare( newName, cs ) == 0 )
220 list << existingName;
227bool QgsNewNameDialog::exists(
const QString &name,
const QStringList &extensions,
const QStringList &existing, Qt::CaseSensitivity cs )
230 const QStringList conflicts =
matching( newNames, existing, cs );
231 return !conflicts.isEmpty();
227bool QgsNewNameDialog::exists(
const QString &name,
const QStringList &extensions,
const QStringList &existing, Qt::CaseSensitivity cs ) {
…}
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.