From e7235cc3f867882ade70b351046e4ad2132707e4 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Fri, 26 Mar 2021 12:43:51 +0200 Subject: [PATCH] Revert "Use QRegularExpression instead of deprecated QRegExp" Related to #14611 This reverts commit 3b748178c21f2c2fc86b9c99a012ac3312f21a2f. --- src/app/qtlocalpeer/qtlocalpeer.cpp | 3 +-- src/base/rss/rss_autodownloadrule.cpp | 6 ++++-- src/base/rss/rss_parser.cpp | 22 ++++++++++------------ src/base/utils/string.cpp | 16 ++-------------- src/base/utils/string.h | 2 +- src/gui/properties/propertieswidget.cpp | 3 +-- src/gui/rss/automatedrssdownloader.cpp | 12 ++---------- src/gui/search/searchjobwidget.cpp | 6 +++--- src/gui/torrentcontentfiltermodel.cpp | 4 ++-- src/gui/transferlistwidget.cpp | 7 ++++--- src/webui/webapplication.cpp | 4 ++-- 11 files changed, 32 insertions(+), 53 deletions(-) diff --git a/src/app/qtlocalpeer/qtlocalpeer.cpp b/src/app/qtlocalpeer/qtlocalpeer.cpp index 5a83963cb..e8345bcd7 100644 --- a/src/app/qtlocalpeer/qtlocalpeer.cpp +++ b/src/app/qtlocalpeer/qtlocalpeer.cpp @@ -79,7 +79,6 @@ #include #include #include -#include #include "base/utils/misc.h" @@ -109,7 +108,7 @@ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) #endif prefix = id.section(QLatin1Char('/'), -1); } - prefix.remove(QRegularExpression("[^a-zA-Z]")); + prefix.remove(QRegExp("[^a-zA-Z]")); prefix.truncate(6); QByteArray idc = id.toUtf8(); diff --git a/src/base/rss/rss_autodownloadrule.cpp b/src/base/rss/rss_autodownloadrule.cpp index 32f79937e..ac47fbb53 100644 --- a/src/base/rss/rss_autodownloadrule.cpp +++ b/src/base/rss/rss_autodownloadrule.cpp @@ -213,8 +213,10 @@ QRegularExpression AutoDownloadRule::cachedRegex(const QString &expression, cons QRegularExpression ®ex = m_dataPtr->cachedRegexes[expression]; if (regex.pattern().isEmpty()) { - const QString pattern = (isRegex ? expression : Utils::String::wildcardToRegexPattern(expression)); - regex = QRegularExpression {pattern, QRegularExpression::CaseInsensitiveOption}; + regex = QRegularExpression + { + (isRegex ? expression : Utils::String::wildcardToRegex(expression)) + , QRegularExpression::CaseInsensitiveOption}; } return regex; diff --git a/src/base/rss/rss_parser.cpp b/src/base/rss/rss_parser.cpp index 4948518e7..66dc5376d 100644 --- a/src/base/rss/rss_parser.cpp +++ b/src/base/rss/rss_parser.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include #include @@ -391,13 +391,12 @@ namespace int nmin = 8; int nsec = 9; // Also accept obsolete form "Weekday, DD-Mon-YY HH:MM:SS ±hhmm" - QRegularExpression rx {"^(?:([A-Z][a-z]+),\\s*)?(\\d{1,2})(\\s+|-)([^-\\s]+)(\\s+|-)(\\d{2,4})\\s+(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s+(\\S+)$"}; - QRegularExpressionMatch rxMatch; + QRegExp rx("^(?:([A-Z][a-z]+),\\s*)?(\\d{1,2})(\\s+|-)([^-\\s]+)(\\s+|-)(\\d{2,4})\\s+(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s+(\\S+)$"); QStringList parts; - if (str.indexOf(rx, 0, &rxMatch) == 0) + if (!str.indexOf(rx)) { // Check that if date has '-' separators, both separators are '-'. - parts = rxMatch.capturedTexts(); + parts = rx.capturedTexts(); const bool h1 = (parts[3] == QLatin1String("-")); const bool h2 = (parts[5] == QLatin1String("-")); if (h1 != h2) @@ -406,10 +405,9 @@ namespace else { // Check for the obsolete form "Wdy Mon DD HH:MM:SS YYYY" - rx = QRegularExpression {"^([A-Z][a-z]+)\\s+(\\S+)\\s+(\\d\\d)\\s+(\\d\\d):(\\d\\d):(\\d\\d)\\s+(\\d\\d\\d\\d)$"}; - if (str.indexOf(rx, 0, &rxMatch) != 0) + rx = QRegExp("^([A-Z][a-z]+)\\s+(\\S+)\\s+(\\d\\d)\\s+(\\d\\d):(\\d\\d):(\\d\\d)\\s+(\\d\\d\\d\\d)$"); + if (str.indexOf(rx)) return QDateTime::currentDateTime(); - nyear = 7; nmonth = 2; nday = 3; @@ -417,7 +415,7 @@ namespace nhour = 4; nmin = 5; nsec = 6; - parts = rxMatch.capturedTexts(); + parts = rx.capturedTexts(); } bool ok[4]; @@ -465,11 +463,11 @@ namespace bool negOffset = false; if (parts.count() > 10) { - rx = QRegularExpression {"^([+-])(\\d\\d)(\\d\\d)$"}; - if (parts[10].indexOf(rx, 0, &rxMatch) == 0) + rx = QRegExp("^([+-])(\\d\\d)(\\d\\d)$"); + if (!parts[10].indexOf(rx)) { // It's a UTC offset ±hhmm - parts = rxMatch.capturedTexts(); + parts = rx.capturedTexts(); offset = parts[2].toInt(&ok[0]) * 3600; const int offsetMin = parts[3].toInt(&ok[1]); if (!ok[0] || !ok[1] || offsetMin > 59) diff --git a/src/base/utils/string.cpp b/src/base/utils/string.cpp index 7256352c4..8f5d0c263 100644 --- a/src/base/utils/string.cpp +++ b/src/base/utils/string.cpp @@ -33,15 +33,10 @@ #include #include +#include #include #include -#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) -#include -#else -#include -#endif - #if defined(Q_OS_MACOS) || defined(__MINGW32__) #define QBT_USES_QTHREADSTORAGE #include @@ -186,21 +181,14 @@ QString Utils::String::fromDouble(const double n, const int precision) return QLocale::system().toString(std::floor(n * prec) / prec, 'f', precision); } -#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) -QString Utils::String::wildcardToRegexPattern(const QString &pattern) -{ - return QRegularExpression::wildcardToRegularExpression(pattern, QRegularExpression::UnanchoredWildcardConversion); -} -#else // This is marked as internal in QRegExp.cpp, but is exported. The alternative would be to // copy the code from QRegExp::wc2rx(). QString qt_regexp_toCanonical(const QString &pattern, QRegExp::PatternSyntax patternSyntax); -QString Utils::String::wildcardToRegexPattern(const QString &pattern) +QString Utils::String::wildcardToRegex(const QString &pattern) { return qt_regexp_toCanonical(pattern, QRegExp::Wildcard); } -#endif std::optional Utils::String::parseBool(const QString &string) { diff --git a/src/base/utils/string.h b/src/base/utils/string.h index 7531a312b..30bf38a8e 100644 --- a/src/base/utils/string.h +++ b/src/base/utils/string.h @@ -50,7 +50,7 @@ namespace Utils::String return (naturalCompare(left, right, caseSensitivity) < 0); } - QString wildcardToRegexPattern(const QString &pattern); + QString wildcardToRegex(const QString &pattern); template T unquote(const T &str, const QString "es = QChar('"')) diff --git a/src/gui/properties/propertieswidget.cpp b/src/gui/properties/propertieswidget.cpp index b05a592e8..48d901f84 100644 --- a/src/gui/properties/propertieswidget.cpp +++ b/src/gui/properties/propertieswidget.cpp @@ -825,8 +825,7 @@ void PropertiesWidget::filteredFilesChanged() void PropertiesWidget::filterText(const QString &filter) { - const QString pattern = Utils::String::wildcardToRegexPattern(filter); - m_propListModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); + m_propListModel->setFilterRegExp(QRegExp(filter, Qt::CaseInsensitive, QRegExp::WildcardUnix)); if (filter.isEmpty()) { m_ui->filesList->collapseAll(); diff --git a/src/gui/rss/automatedrssdownloader.cpp b/src/gui/rss/automatedrssdownloader.cpp index fb0313799..4cf58947a 100644 --- a/src/gui/rss/automatedrssdownloader.cpp +++ b/src/gui/rss/automatedrssdownloader.cpp @@ -719,14 +719,10 @@ void AutomatedRssDownloader::updateMustLineValidity() { QStringList tokens; if (isRegex) - { tokens << text; - } else - { for (const QString &token : asConst(text.split('|'))) - tokens << Utils::String::wildcardToRegexPattern(token); - } + tokens << Utils::String::wildcardToRegex(token); for (const QString &token : asConst(tokens)) { @@ -766,14 +762,10 @@ void AutomatedRssDownloader::updateMustNotLineValidity() { QStringList tokens; if (isRegex) - { tokens << text; - } else - { for (const QString &token : asConst(text.split('|'))) - tokens << Utils::String::wildcardToRegexPattern(token); - } + tokens << Utils::String::wildcardToRegex(token); for (const QString &token : asConst(tokens)) { diff --git a/src/gui/search/searchjobwidget.cpp b/src/gui/search/searchjobwidget.cpp index 54272432a..74fd4702f 100644 --- a/src/gui/search/searchjobwidget.cpp +++ b/src/gui/search/searchjobwidget.cpp @@ -365,9 +365,9 @@ void SearchJobWidget::fillFilterComboBoxes() void SearchJobWidget::filterSearchResults(const QString &name) { - const QString pattern = (Preferences::instance()->getRegexAsFilteringPatternForSearchJob() - ? name : Utils::String::wildcardToRegexPattern(name)); - m_proxyModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); + const QRegExp::PatternSyntax patternSyntax = Preferences::instance()->getRegexAsFilteringPatternForSearchJob() + ? QRegExp::RegExp : QRegExp::WildcardUnix; + m_proxyModel->setFilterRegExp(QRegExp(name, Qt::CaseInsensitive, patternSyntax)); updateResultsCount(); } diff --git a/src/gui/torrentcontentfiltermodel.cpp b/src/gui/torrentcontentfiltermodel.cpp index 465a21164..9659129ca 100644 --- a/src/gui/torrentcontentfiltermodel.cpp +++ b/src/gui/torrentcontentfiltermodel.cpp @@ -129,7 +129,7 @@ bool TorrentContentFilterModel::hasFiltered(const QModelIndex &folder) const // this should be called only with folders // check if the folder name itself matches the filter string QString name = folder.data().toString(); - if (name.contains(filterRegularExpression())) + if (name.contains(filterRegExp())) return true; for (int child = 0; child < m_model->rowCount(folder); ++child) { @@ -141,7 +141,7 @@ bool TorrentContentFilterModel::hasFiltered(const QModelIndex &folder) const continue; } name = childIndex.data().toString(); - if (name.contains(filterRegularExpression())) + if (name.contains(filterRegExp())) return true; } diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp index 17d3719b1..ca1abb8f6 100644 --- a/src/gui/transferlistwidget.cpp +++ b/src/gui/transferlistwidget.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -1130,9 +1131,9 @@ void TransferListWidget::applyTrackerFilter(const QSet &t void TransferListWidget::applyNameFilter(const QString &name) { - const QString pattern = (Preferences::instance()->getRegexAsFilteringPatternForTransferList() - ? name : Utils::String::wildcardToRegexPattern(name)); - m_sortFilterModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); + const QRegExp::PatternSyntax patternSyntax = Preferences::instance()->getRegexAsFilteringPatternForTransferList() + ? QRegExp::RegExp : QRegExp::WildcardUnix; + m_sortFilterModel->setFilterRegExp(QRegExp(name, Qt::CaseInsensitive, patternSyntax)); } void TransferListWidget::applyStatusFilter(int f) diff --git a/src/webui/webapplication.cpp b/src/webui/webapplication.cpp index b2e99b21c..372229c13 100644 --- a/src/webui/webapplication.cpp +++ b/src/webui/webapplication.cpp @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include "base/algorithm.h" @@ -693,7 +693,7 @@ bool WebApplication::validateHostHeader(const QStringList &domains) const // try matching host header with domain list for (const auto &domain : domains) { - const QRegularExpression domainRegex {Utils::String::wildcardToRegexPattern(domain), QRegularExpression::CaseInsensitiveOption}; + QRegExp domainRegex(domain, Qt::CaseInsensitive, QRegExp::Wildcard); if (requestHost.contains(domainRegex)) return true; }