aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <[email protected]>2025-04-17 17:10:56 +0200
committerhjk <[email protected]>2025-04-25 06:03:50 +0000
commitc1603c2e750dc8512101271dce787f0743c98c0e (patch)
treee6ff70d7638cbe4962eff20b89b19bc350fd7ff2
parent5d45e339a7a4f1dc66a5bb64333521f0774f3adc (diff)
Utils: Allow validators operating on a single string in FancyLineEdit
Change-Id: I68f21e96efab05e9f5aa6c18973cbdb20c0c3417 Reviewed-by: Alessandro Portale <[email protected]>
-rw-r--r--src/libs/utils/classnamevalidatinglineedit.cpp13
-rw-r--r--src/libs/utils/classnamevalidatinglineedit.h2
-rw-r--r--src/libs/utils/fancylineedit.cpp36
-rw-r--r--src/libs/utils/fancylineedit.h11
-rw-r--r--src/libs/utils/filenamevalidatinglineedit.cpp6
-rw-r--r--src/libs/utils/projectintropage.cpp4
-rw-r--r--src/plugins/autotest/gtest/gtestframework.cpp4
-rw-r--r--src/plugins/axivion/axivionsettings.cpp15
-rw-r--r--src/plugins/coreplugin/dialogs/shortcutsettings.cpp2
-rw-r--r--src/plugins/coreplugin/find/findtoolbar.cpp2
-rw-r--r--src/plugins/coreplugin/find/findtoolwindow.cpp6
-rw-r--r--src/plugins/cppeditor/quickfixes/extractfunction.cpp4
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp7
-rw-r--r--src/plugins/git/gerrit/gerritdialog.cpp2
-rw-r--r--src/plugins/git/remotedialog.cpp15
-rw-r--r--src/plugins/gitlab/gitlabclonedialog.cpp4
-rw-r--r--src/plugins/gitlab/gitlaboptionspage.cpp4
-rw-r--r--src/plugins/languageclient/languageclientsettings.cpp4
-rw-r--r--src/plugins/projectexplorer/devicesupport/idevice.cpp4
-rw-r--r--src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp10
-rw-r--r--src/plugins/squish/propertyitemdelegate.cpp17
-rw-r--r--src/plugins/squish/squishtesttreeview.cpp8
-rw-r--r--src/plugins/squish/symbolnameitemdelegate.cpp5
24 files changed, 100 insertions, 87 deletions
diff --git a/src/libs/utils/classnamevalidatinglineedit.cpp b/src/libs/utils/classnamevalidatinglineedit.cpp
index 99c59c849c9..d218eb81494 100644
--- a/src/libs/utils/classnamevalidatinglineedit.cpp
+++ b/src/libs/utils/classnamevalidatinglineedit.cpp
@@ -35,9 +35,7 @@ ClassNameValidatingLineEdit::ClassNameValidatingLineEdit(QWidget *parent) :
FancyLineEdit(parent),
d(new ClassNameValidatingLineEditPrivate)
{
- setValidationFunction([this](FancyLineEdit *edit) {
- return validateClassName(edit);
- });
+ setValidationFunction([this](const QString &text) { return validateClassName(text); });
updateRegExp();
}
@@ -73,18 +71,17 @@ void ClassNameValidatingLineEdit::setNamespaceDelimiter(const QString &delimiter
d->m_namespaceDelimiter = delimiter;
}
-Result<> ClassNameValidatingLineEdit::validateClassName(FancyLineEdit *edit) const
+Result<> ClassNameValidatingLineEdit::validateClassName(const QString &text) const
{
QTC_ASSERT(d->m_nameRegexp.isValid(), return ResultError(ResultAssert));
- const QString value = edit->text();
- if (!d->m_namespacesEnabled && value.contains(d->m_namespaceDelimiter))
+ if (!d->m_namespacesEnabled && text.contains(d->m_namespaceDelimiter))
return ResultError(Tr::tr("The class name must not contain namespace delimiters."));
- if (value.isEmpty())
+ if (text.isEmpty())
return ResultError(Tr::tr("Please enter a class name."));
- if (!d->m_nameRegexp.match(value).hasMatch())
+ if (!d->m_nameRegexp.match(text).hasMatch())
return ResultError(Tr::tr("The class name contains invalid characters."));
return ResultOk;
diff --git a/src/libs/utils/classnamevalidatinglineedit.h b/src/libs/utils/classnamevalidatinglineedit.h
index 9daba0f875d..b8fbcea519c 100644
--- a/src/libs/utils/classnamevalidatinglineedit.h
+++ b/src/libs/utils/classnamevalidatinglineedit.h
@@ -42,7 +42,7 @@ signals:
void updateFileName(const QString &t);
protected:
- Result<> validateClassName(FancyLineEdit *edit) const;
+ Result<> validateClassName(const QString &text) const;
void handleChanged(const QString &t) override;
QString fixInputString(const QString &string) override;
diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp
index fe286498b94..d8cea641f0a 100644
--- a/src/libs/utils/fancylineedit.cpp
+++ b/src/libs/utils/fancylineedit.cpp
@@ -481,11 +481,11 @@ FancyLineEdit::ValidationFunction FancyLineEdit::defaultValidationFunction()
return &FancyLineEdit::validateWithValidator;
}
-Result<> FancyLineEdit::validateWithValidator(FancyLineEdit *edit)
+Result<> FancyLineEdit::validateWithValidator(FancyLineEdit &edit)
{
- if (const QValidator *v = edit->validator()) {
- QString tmp = edit->text();
- int pos = edit->cursorPosition();
+ if (const QValidator *v = edit.validator()) {
+ QString tmp = edit.text();
+ int pos = edit.cursorPosition();
if (v->validate(tmp, pos) != QValidator::Acceptable)
return ResultError(QString());
}
@@ -611,7 +611,7 @@ void FancyLineEdit::validate()
}
if (d->m_validationFunction.index() == 1) {
- auto &validationFunction = std::get<1>(d->m_validationFunction);
+ SynchronousValidationFunction &validationFunction = std::get<1>(d->m_validationFunction);
if (!validationFunction)
return;
@@ -626,7 +626,31 @@ void FancyLineEdit::validate()
Result<QString> result;
- if (const Result<> validates = validationFunction(this))
+ if (const Result<> validates = validationFunction(*this))
+ result = t;
+ else
+ result = ResultError(validates.error());
+
+ handleValidationResult(result, t);
+ }
+
+ if (d->m_validationFunction.index() == 2) {
+ SimpleSynchronousValidationFunction &validationFunction = std::get<2>(d->m_validationFunction);
+ if (!validationFunction)
+ return;
+
+ const QString t = text();
+
+ if (d->m_isFiltering) {
+ if (t != d->m_lastFilterText) {
+ d->m_lastFilterText = t;
+ emit filterChanged(t);
+ }
+ }
+
+ Result<QString> result;
+
+ if (const Result<> validates = validationFunction(t))
result = t;
else
result = ResultError(validates.error());
diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h
index 2a23555452d..873d4b04b70 100644
--- a/src/libs/utils/fancylineedit.h
+++ b/src/libs/utils/fancylineedit.h
@@ -105,8 +105,13 @@ public:
using AsyncValidationResult = Result<QString>;
using AsyncValidationFuture = QFuture<AsyncValidationResult>;
using AsyncValidationFunction = std::function<AsyncValidationFuture(QString)>;
- using SynchronousValidationFunction = std::function<Result<>(FancyLineEdit *)>;
- using ValidationFunction = std::variant<AsyncValidationFunction, SynchronousValidationFunction>;
+ using SynchronousValidationFunction = std::function<Result<>(FancyLineEdit &)>;
+ using SimpleSynchronousValidationFunction = std::function<Result<>(const QString &)>;
+ using ValidationFunction = std::variant<
+ AsyncValidationFunction,
+ SynchronousValidationFunction,
+ SimpleSynchronousValidationFunction
+ >;
enum State { Invalid, DisplayingPlaceholderText, Valid };
@@ -149,7 +154,7 @@ private:
void handleValidationResult(AsyncValidationResult result, const QString &oldText);
- static Result<> validateWithValidator(FancyLineEdit *edit);
+ static Result<> validateWithValidator(FancyLineEdit &edit);
// Unimplemented, to force the user to make a decision on
// whether to use setHistoryCompleter() or setSpecialCompleter().
void setCompleter(QCompleter *);
diff --git a/src/libs/utils/filenamevalidatinglineedit.cpp b/src/libs/utils/filenamevalidatinglineedit.cpp
index 25bc7cb9938..112d0595a49 100644
--- a/src/libs/utils/filenamevalidatinglineedit.cpp
+++ b/src/libs/utils/filenamevalidatinglineedit.cpp
@@ -48,10 +48,10 @@ FileNameValidatingLineEdit::FileNameValidatingLineEdit(QWidget *parent) :
m_allowDirectories(false),
m_forceFirstCapitalLetter(false)
{
- setValidationFunction([this](FancyLineEdit *edit) {
- if (const Result<> res = validateFileNameExtension(edit->text(), requiredExtensions()); !res)
+ setValidationFunction([this](const QString &text) {
+ if (const Result<> res = validateFileNameExtension(text, requiredExtensions()); !res)
return res;
- if (const Result<> res = validateFileName(edit->text(), allowDirectories()); !res)
+ if (const Result<> res = validateFileName(text, allowDirectories()); !res)
return res;
return ResultOk;
});
diff --git a/src/libs/utils/projectintropage.cpp b/src/libs/utils/projectintropage.cpp
index 657d69cf9ed..a31fdcdcbc9 100644
--- a/src/libs/utils/projectintropage.cpp
+++ b/src/libs/utils/projectintropage.cpp
@@ -99,8 +99,8 @@ ProjectIntroPage::ProjectIntroPage(QWidget *parent) :
d->m_nameLineEdit->setPlaceholderText(Tr::tr("Enter project name"));
d->m_nameLineEdit->setObjectName("nameLineEdit");
d->m_nameLineEdit->setFocus();
- d->m_nameLineEdit->setValidationFunction([this](FancyLineEdit *edit) {
- return validateProjectName(edit->text());
+ d->m_nameLineEdit->setValidationFunction([this](const QString &text) {
+ return validateProjectName(text);
});
d->m_projectLabel = new QLabel(Tr::tr("Add to project:"));
diff --git a/src/plugins/autotest/gtest/gtestframework.cpp b/src/plugins/autotest/gtest/gtestframework.cpp
index 8f636bf6c84..cf068e970cf 100644
--- a/src/plugins/autotest/gtest/gtestframework.cpp
+++ b/src/plugins/autotest/gtest/gtestframework.cpp
@@ -111,8 +111,8 @@ GTestFramework::GTestFramework()
gtestFilter.setToolTip(Tr::tr("Set the GTest filter to be used for grouping.\nSee Google Test "
"documentation for further information on GTest filters."));
- gtestFilter.setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- if (edit && GTestUtils::isValidGTestFilter(edit->text()))
+ gtestFilter.setValidationFunction([](const QString &text) -> Result<> {
+ if (GTestUtils::isValidGTestFilter(text))
return ResultOk;
return ResultError(QString());
});
diff --git a/src/plugins/axivion/axivionsettings.cpp b/src/plugins/axivion/axivionsettings.cpp
index 5222021f09c..5f7b4ade94e 100644
--- a/src/plugins/axivion/axivionsettings.cpp
+++ b/src/plugins/axivion/axivionsettings.cpp
@@ -442,8 +442,8 @@ DashboardSettingsWidget::DashboardSettingsWidget(QWidget *parent, QPushButton *o
{
m_dashboardUrl.setLabelText(Tr::tr("Dashboard URL:"));
m_dashboardUrl.setDisplayStyle(StringAspect::LineEditDisplay);
- m_dashboardUrl.setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- if (isUrlValid(edit->text()))
+ m_dashboardUrl.setValidationFunction([](const QString &text) -> Result<> {
+ if (isUrlValid(text))
return ResultOk;
return ResultError(QString());
});
@@ -502,18 +502,17 @@ public:
{
m_projectName.setLabelText(Tr::tr("Project name:"));
m_projectName.setDisplayStyle(StringAspect::LineEditDisplay);
- m_projectName.setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- QTC_ASSERT(edit, return ResultError(ResultAssert));
- if (edit->text().isEmpty())
+ m_projectName.setValidationFunction([](const QString &text) -> Result<> {
+ if (text.isEmpty())
return ResultError(Tr::tr("Project name must be non-empty."));
return ResultOk;
});
m_analysisPath.setLabelText(Tr::tr("Analysis path:"));
m_analysisPath.setDisplayStyle(StringAspect::LineEditDisplay);
- m_analysisPath.setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- QTC_ASSERT(edit, return ResultError(ResultAssert));
+ m_analysisPath.setValidationFunction([](const QString &text) -> Result<> {
+ QString input = text;
// do NOT use fromUserInput() as this also cleans the path
- const FilePath fp = FilePath::fromString(edit->text().replace('\\', '/'));
+ const FilePath fp = FilePath::fromString(input.replace('\\', '/'));
return analysisPathValid(fp);
});
m_localPath.setLabelText(Tr::tr("Local path:"));
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
index 3c925a312c3..a9e3dc50550 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
@@ -496,7 +496,7 @@ ShortcutInput::ShortcutInput()
m_warningLabel->setPalette(palette);
connect(m_warningLabel, &QLabel::linkActivated, this, &ShortcutInput::showConflictsRequested);
- m_shortcutEdit->setValidationFunction([this](FancyLineEdit *) -> Result<> {
+ m_shortcutEdit->setValidationFunction([this](const QString &) -> Result<> {
QString warningMessage;
const QKeySequence key = keySequenceFromEditString(m_shortcutEdit->text());
const bool isValid = checkValidity(key, &warningMessage);
diff --git a/src/plugins/coreplugin/find/findtoolbar.cpp b/src/plugins/coreplugin/find/findtoolbar.cpp
index 657091b64ae..aafe6026607 100644
--- a/src/plugins/coreplugin/find/findtoolbar.cpp
+++ b/src/plugins/coreplugin/find/findtoolbar.cpp
@@ -174,7 +174,7 @@ FindToolBar::FindToolBar(CurrentDocumentFind *currentDocumentFind)
m_findEdit->setFiltering(true);
m_findEdit->setPlaceholderText(QString());
m_findEdit->button(Utils::FancyLineEdit::Left)->setFocusPolicy(Qt::TabFocus);
- m_findEdit->setValidationFunction([this](FancyLineEdit *) -> Result<> {
+ m_findEdit->setValidationFunction([this](const QString &) -> Result<> {
if (m_lastResult != IFindSupport::NotFound)
return ResultOk;
return ResultError(QString());
diff --git a/src/plugins/coreplugin/find/findtoolwindow.cpp b/src/plugins/coreplugin/find/findtoolwindow.cpp
index cd7fdd58561..a1ff7a806b9 100644
--- a/src/plugins/coreplugin/find/findtoolwindow.cpp
+++ b/src/plugins/coreplugin/find/findtoolwindow.cpp
@@ -30,13 +30,13 @@ namespace Core::Internal {
static FindToolWindow *m_instance = nullptr;
-static Result<> validateRegExp(FancyLineEdit *edit)
+static Result<> validateRegExp(const QString &text)
{
- if (edit->text().isEmpty())
+ if (text.isEmpty())
return ResultError(Tr::tr("Empty search term."));
if (Find::hasFindFlag(FindRegularExpression)) {
- QRegularExpression regexp(edit->text());
+ QRegularExpression regexp(text);
if (!regexp.isValid())
return ResultError(regexp.errorString());
}
diff --git a/src/plugins/cppeditor/quickfixes/extractfunction.cpp b/src/plugins/cppeditor/quickfixes/extractfunction.cpp
index b6e9a6eebcc..a8802d4de19 100644
--- a/src/plugins/cppeditor/quickfixes/extractfunction.cpp
+++ b/src/plugins/cppeditor/quickfixes/extractfunction.cpp
@@ -224,8 +224,8 @@ public:
auto layout = new QFormLayout(&dlg);
auto funcNameEdit = new FancyLineEdit;
- funcNameEdit->setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- if (ExtractFunctionOptions::isValidFunctionName(edit->text()))
+ funcNameEdit->setValidationFunction([](const QString &text) -> Result<> {
+ if (ExtractFunctionOptions::isValidFunctionName(text))
return ResultOk;
return ResultError(QString());
});
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index a2834d33694..56972f57804 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -493,11 +493,10 @@ FakeVimExCommandsMappings::FakeVimExCommandsMappings()
m_commandEdit->setPlaceholderText(QString());
connect(m_commandEdit, &FancyLineEdit::textChanged,
this, &FakeVimExCommandsMappings::commandChanged);
- m_commandEdit->setValidationFunction([](FancyLineEdit *e) -> Result<> {
- if (QRegularExpression(e->text()).isValid())
+ m_commandEdit->setValidationFunction([](const QString &text) -> Result<> {
+ if (QRegularExpression(text).isValid())
return ResultOk;
- return ResultError(Tr::tr("The pattern \"%1\" is no valid regular expression")
- .arg(e->text()));
+ return ResultError(Tr::tr("The pattern \"%1\" is no valid regular expression").arg(text));
});
auto resetButton = new QPushButton(Tr::tr("Reset"), m_commandBox);
resetButton->setToolTip(Tr::tr("Reset to default."));
diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp
index 5305f5cb00f..4ca670f52dc 100644
--- a/src/plugins/git/gerrit/gerritdialog.cpp
+++ b/src/plugins/git/gerrit/gerritdialog.cpp
@@ -67,7 +67,7 @@ GerritDialog::GerritDialog(const std::shared_ptr<GerritServer> &s,
m_queryLineEdit->setMinimumSize(QSize(400, 0));
m_queryLineEdit->setPlaceholderText(Git::Tr::tr("Change #, hash, tr:id, owner:email or reviewer:email"));
m_queryLineEdit->setSpecialCompleter(new QCompleter(m_queryModel, this));
- m_queryLineEdit->setValidationFunction([this](FancyLineEdit *) -> Result<> {
+ m_queryLineEdit->setValidationFunction([this](const QString &) -> Result<> {
if (m_model->state() != GerritModel::Error)
return ResultOk;
return ResultError(QString());
diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp
index fd1a0893c6f..2bb8b7e29d5 100644
--- a/src/plugins/git/remotedialog.cpp
+++ b/src/plugins/git/remotedialog.cpp
@@ -44,12 +44,9 @@ public:
m_nameEdit = new FancyLineEdit(this);
m_nameEdit->setHistoryCompleter("Git.RemoteNames");
- m_nameEdit->setValidationFunction([this](FancyLineEdit *edit) -> Result<> {
- if (!edit)
- return ResultError(ResultAssert);
-
- QString input = edit->text();
- edit->setText(input.replace(m_invalidRemoteNameChars, "_"));
+ m_nameEdit->setValidationFunction([this](FancyLineEdit &edit) -> Result<> {
+ QString input = edit.text();
+ edit.setText(input.replace(m_invalidRemoteNameChars, "_"));
// "Intermediate" patterns, may change to Acceptable when user edits further:
if (input.endsWith(".lock")) //..may not end with ".lock"
@@ -73,11 +70,11 @@ public:
m_urlEdit = new FancyLineEdit(this);
m_urlEdit->setHistoryCompleter("Git.RemoteUrls");
- m_urlEdit->setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- if (!edit || edit->text().isEmpty())
+ m_urlEdit->setValidationFunction([](FancyLineEdit &edit) -> Result<> {
+ if (edit.text().isEmpty())
return ResultError(QString());
- const GitRemote r(edit->text());
+ const GitRemote r(edit.text());
if (!r.isValid)
return ResultError(Tr::tr("The URL may not be valid."));
diff --git a/src/plugins/gitlab/gitlabclonedialog.cpp b/src/plugins/gitlab/gitlabclonedialog.cpp
index c47e87532b0..a58568b0d74 100644
--- a/src/plugins/gitlab/gitlabclonedialog.cpp
+++ b/src/plugins/gitlab/gitlabclonedialog.cpp
@@ -61,8 +61,8 @@ GitLabCloneDialog::GitLabCloneDialog(const Project &project, QWidget *parent)
m_pathChooser->setExpectedKind(PathChooser::ExistingDirectory);
form->addRow(Tr::tr("Path"), m_pathChooser);
m_directoryLE = new FancyLineEdit(this);
- m_directoryLE->setValidationFunction([this](FancyLineEdit *e) -> Result<> {
- const FilePath fullPath = m_pathChooser->filePath().pathAppended(e->text());
+ m_directoryLE->setValidationFunction([this](const QString &text) -> Result<> {
+ const FilePath fullPath = m_pathChooser->filePath().pathAppended(text);
if (fullPath.exists())
return ResultError(Tr::tr("Path \"%1\" already exists.").arg(fullPath.toUserOutput()));
return ResultOk;
diff --git a/src/plugins/gitlab/gitlaboptionspage.cpp b/src/plugins/gitlab/gitlaboptionspage.cpp
index 6745a8bac99..e62b810f674 100644
--- a/src/plugins/gitlab/gitlaboptionspage.cpp
+++ b/src/plugins/gitlab/gitlaboptionspage.cpp
@@ -70,8 +70,8 @@ GitLabServerWidget::GitLabServerWidget(Mode m, QWidget *parent)
m_host.setLabelText(Tr::tr("Host:"));
m_host.setDisplayStyle(m == Display ? StringAspect::LabelDisplay
: StringAspect::LineEditDisplay);
- m_host.setValidationFunction([](FancyLineEdit *l) -> Result<> {
- if (hostValid(l->text()))
+ m_host.setValidationFunction([](const QString &text) -> Result<> {
+ if (hostValid(text))
return ResultOk;
return ResultError(QString());
});
diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp
index 86d036acd15..5c2189d71ea 100644
--- a/src/plugins/languageclient/languageclientsettings.cpp
+++ b/src/plugins/languageclient/languageclientsettings.cpp
@@ -917,8 +917,8 @@ BaseSettingsWidget::BaseSettingsWidget(const BaseSettings *settings, QWidget *pa
m_startupBehavior->addItem(startupBehaviorString(BaseSettings::StartBehavior(behavior)));
m_startupBehavior->setCurrentIndex(settings->m_startBehavior);
- m_initializationOptions->setValidationFunction([](FancyLineEdit *edit) -> Result<> {
- const QString value = globalMacroExpander()->expand(edit->text());
+ m_initializationOptions->setValidationFunction([](const QString &text) -> Result<> {
+ const QString value = globalMacroExpander()->expand(text);
if (value.isEmpty())
return ResultOk;
diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp
index da3cd1fe3b6..017bafb0df7 100644
--- a/src/plugins/projectexplorer/devicesupport/idevice.cpp
+++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp
@@ -231,8 +231,8 @@ IDevice::IDevice()
};
d->displayName.setValidationFunction(
- [this, validateDisplayName](FancyLineEdit *edit) -> Result<> {
- return validateDisplayName(d->displayName.value(), edit->text());
+ [this, validateDisplayName](const QString &text) -> Result<> {
+ return validateDisplayName(d->displayName.value(), text);
});
d->displayName.setValueAcceptor(
diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp
index 497291004de..f172f725597 100644
--- a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp
+++ b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp
@@ -109,7 +109,7 @@ public:
m_expander.registerVariable("INPUT", Tr::tr("The text edit input to fix up."),
[this] { return m_currentInput; });
m_expander.registerSubProvider([expander]() -> MacroExpander * { return expander; });
- setValidationFunction([this, regex](FancyLineEdit *) -> Result<> {
+ setValidationFunction([this, regex](const QString &) -> Result<> {
if (regex.match(text()).hasMatch())
return ResultOk;
return ResultError(QString());
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index 998f8d65118..645b3f1fbcb 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -131,7 +131,7 @@ private:
QbsBuildStep *qbsStep() const;
- Result<> validateProperties(FancyLineEdit *edit);
+ Result<> validateProperties(const QString &text);
class Property
{
@@ -485,8 +485,8 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step)
propertyEdit = new FancyLineEdit(this);
propertyEdit->setToolTip(QbsProjectManager::Tr::tr("Properties to pass to the project."));
- propertyEdit->setValidationFunction([this](FancyLineEdit *edit) {
- return validateProperties(edit);
+ propertyEdit->setValidationFunction([this](const QString &text) {
+ return validateProperties(text);
});
defaultInstallDirCheckBox = new QCheckBox(this);
@@ -654,10 +654,10 @@ QbsBuildStep *QbsBuildStepConfigWidget::qbsStep() const
return m_qbsStep;
}
-Result<> QbsBuildStepConfigWidget::validateProperties(FancyLineEdit *edit)
+Result<> QbsBuildStepConfigWidget::validateProperties(const QString &text)
{
ProcessArgs::SplitError err;
- const QStringList argList = ProcessArgs::splitArgs(edit->text(), HostOsInfo::hostOs(), false, &err);
+ const QStringList argList = ProcessArgs::splitArgs(text, HostOsInfo::hostOs(), false, &err);
if (err != ProcessArgs::SplitOk)
return ResultError(QbsProjectManager::Tr::tr("Could not split properties."));
diff --git a/src/plugins/squish/propertyitemdelegate.cpp b/src/plugins/squish/propertyitemdelegate.cpp
index 8297a98a833..077ec399dff 100644
--- a/src/plugins/squish/propertyitemdelegate.cpp
+++ b/src/plugins/squish/propertyitemdelegate.cpp
@@ -132,17 +132,12 @@ void PropertyItemDelegate::setModelData(QWidget *editor,
ValidatingPropertyNameLineEdit::ValidatingPropertyNameLineEdit(const QStringList &forbidden,
QWidget *parent)
- : Utils::FancyLineEdit(parent)
+ : FancyLineEdit(parent)
, m_forbidden(forbidden)
{
- setValidationFunction([this](FancyLineEdit *edit) -> Result<> {
- if (!edit)
- return ResultError(QString());
-
+ setValidationFunction([this](const QString &text) -> Result<> {
static const QRegularExpression identifier("^[a-zA-Z0-9_]+$");
- const QString &value = edit->text();
-
- if (!m_forbidden.contains(value) && identifier.match(value).hasMatch())
+ if (!m_forbidden.contains(text) && identifier.match(text).hasMatch())
return ResultOk;
return ResultError(QString());
});
@@ -152,12 +147,12 @@ ValidatingPropertyNameLineEdit::ValidatingPropertyNameLineEdit(const QStringList
ValidatingPropertyContainerLineEdit::ValidatingPropertyContainerLineEdit(const QStringList &allowed,
QWidget *parent)
- : Utils::FancyLineEdit(parent)
+ : FancyLineEdit(parent)
, m_allowed(allowed)
{
setSpecialCompleter(new QCompleter(allowed, this));
- setValidationFunction([this](FancyLineEdit *edit) -> Result<> {
- if (edit && m_allowed.contains(edit->text()))
+ setValidationFunction([this](const QString &text) -> Result<> {
+ if (m_allowed.contains(text))
return ResultOk;
return ResultError(QString());
});
diff --git a/src/plugins/squish/squishtesttreeview.cpp b/src/plugins/squish/squishtesttreeview.cpp
index 1d38b2178df..9cf1045898c 100644
--- a/src/plugins/squish/squishtesttreeview.cpp
+++ b/src/plugins/squish/squishtesttreeview.cpp
@@ -120,9 +120,9 @@ static QWidget *testCaseEditor(QWidget *parent, const SquishTestTreeItem *item)
const SuiteConf suiteConf = SuiteConf::readSuiteConf(suite->filePath());
const QStringList inUse = suiteConf.usedTestCases();
FancyLineEdit *editor = new FancyLineEdit(parent);
- editor->setValidationFunction([inUse](FancyLineEdit *edit) -> Result<> {
+ editor->setValidationFunction([inUse](const QString &text) -> Result<> {
static const QRegularExpression validFileName("^[-a-zA-Z0-9_$. ]+$");
- QString testName = edit->text();
+ QString testName = text;
if (!testName.startsWith("tst_"))
testName.prepend("tst_");
if (validFileName.match(testName).hasMatch() && !inUse.contains(testName))
@@ -137,8 +137,8 @@ static QWidget *sharedScriptEditor(QWidget *parent, const SquishTestTreeItem *it
{
const FilePath folder = static_cast<SquishTestTreeItem *>(item->parent())->filePath();
FancyLineEdit *editor = new FancyLineEdit(parent);
- editor->setValidationFunction([folder](FancyLineEdit *edit) -> Result<> {
- if (!edit->text().isEmpty() && !folder.pathAppended(edit->text()).exists())
+ editor->setValidationFunction([folder](const QString &text) -> Result<> {
+ if (!text.isEmpty() && !folder.pathAppended(text).exists())
return ResultOk;
return ResultError(QString());
});
diff --git a/src/plugins/squish/symbolnameitemdelegate.cpp b/src/plugins/squish/symbolnameitemdelegate.cpp
index f62afda8cd6..73b999ba381 100644
--- a/src/plugins/squish/symbolnameitemdelegate.cpp
+++ b/src/plugins/squish/symbolnameitemdelegate.cpp
@@ -53,10 +53,7 @@ ValidatingContainerNameLineEdit::ValidatingContainerNameLineEdit(const QStringLi
: FancyLineEdit(parent)
, m_forbidden(forbidden)
{
- setValidationFunction([this](FancyLineEdit *edit) -> Result<> {
- if (!edit)
- return ResultError(QString());
- const QString &value = edit->text();
+ setValidationFunction([this](const QString &value) -> Result<> {
if (value.isEmpty())
return ResultError(QString());
const QString realName = value.at(0) == ObjectsMapTreeItem::COLON