More QRegularExpression and include for Qt 6

Task-number: QTCREATORBUG-24098
Change-Id: Ia537e26efd3f37319c38d906e569b255768371f9
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2020-06-23 13:00:43 +02:00
parent 5a091c3d98
commit 03838decb9
8 changed files with 38 additions and 29 deletions

View File

@@ -44,14 +44,13 @@ 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);
if (match.hasMatch())
f = match.captured(2);
return f.split(QLatin1Char(' '), Utils::SkipEmptyParts);
}
@@ -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;