aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmakeprojectmanager/addlibrarywizard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmakeprojectmanager/addlibrarywizard.cpp')
-rw-r--r--src/plugins/qmakeprojectmanager/addlibrarywizard.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/plugins/qmakeprojectmanager/addlibrarywizard.cpp b/src/plugins/qmakeprojectmanager/addlibrarywizard.cpp
index 34553567b9..6ccb6970d5 100644
--- a/src/plugins/qmakeprojectmanager/addlibrarywizard.cpp
+++ b/src/plugins/qmakeprojectmanager/addlibrarywizard.cpp
@@ -29,14 +29,14 @@
#include <utils/hostosinfo.h>
#include <utils/fileutils.h>
+#include <utils/stringutils.h>
+#include <QFileInfo>
#include <QLabel>
#include <QRadioButton>
#include <QScrollArea>
-#include <QVBoxLayout>
-
-#include <QFileInfo>
#include <QTextStream>
+#include <QVBoxLayout>
using namespace QmakeProjectManager;
using namespace QmakeProjectManager::Internal;
@@ -44,15 +44,14 @@ using namespace QmakeProjectManager::Internal;
const char qt_file_dialog_filter_reg_exp[] =
"^(.*)\\(([a-zA-Z0-9_.*? +;#\\-\\[\\]@\\{\\}/!<>\\$%&=^~:\\|]*)\\)$";
-// taken from qfiledialog.cpp
-QStringList qt_clean_filter_list(const QString &filter)
+static QStringList qt_clean_filter_list(const QString &filter)
{
- QRegExp regexp(QString::fromLatin1(qt_file_dialog_filter_reg_exp));
+ const QRegularExpression regexp(qt_file_dialog_filter_reg_exp);
+ const QRegularExpressionMatch match = regexp.match(filter);
QString f = filter;
- int i = regexp.indexIn(f);
- if (i >= 0)
- f = regexp.cap(2);
- return f.split(QLatin1Char(' '), QString::SkipEmptyParts);
+ if (match.hasMatch())
+ f = match.captured(2);
+ return f.split(QLatin1Char(' '), Utils::SkipEmptyParts);
}
static bool validateLibraryPath(const Utils::FilePath &filePath,
@@ -65,12 +64,16 @@ static bool validateLibraryPath(const Utils::FilePath &filePath,
const QString fileName = filePath.fileName();
- QStringList filters = qt_clean_filter_list(pathChooser->promptDialogFilter());
- for (int i = 0; i < filters.count(); i++) {
- QRegExp regExp(filters.at(i));
- regExp.setCaseSensitivity(Utils::HostOsInfo::fileNameCaseSensitivity());
- regExp.setPatternSyntax(QRegExp::Wildcard);
- if (regExp.exactMatch(fileName))
+ QRegularExpression::PatternOption option =
+ Utils::HostOsInfo::fileNameCaseSensitivity() == Qt::CaseInsensitive
+ ? QRegularExpression::CaseInsensitiveOption
+ : QRegularExpression::NoPatternOption;
+
+ const QStringList filters = qt_clean_filter_list(pathChooser->promptDialogFilter());
+ for (const QString &filter : filters) {
+ QString pattern = QRegularExpression::wildcardToRegularExpression(filter);
+ QRegularExpression regExp(pattern, option);
+ if (regExp.match(fileName).hasMatch())
return true;
}
return false;
@@ -195,7 +198,7 @@ DetailsPage::DetailsPage(AddLibraryWizard *parent)
const auto pathValidator = [libPathChooser](Utils::FancyLineEdit *edit, QString *errorMessage) {
return libPathChooser->defaultValidationFunction()(edit, errorMessage)
- && validateLibraryPath(libPathChooser->fileName(),
+ && validateLibraryPath(libPathChooser->filePath(),
libPathChooser, errorMessage);
};
libPathChooser->setValidationFunction(pathValidator);