summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-03-18 22:07:41 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-03-19 11:03:11 +0100
commitdb14f7047ba45cff42adb73eac0bce4034dd4a03 (patch)
treebb0c66df445cf389e63098f2ba7a603c03e0ed7c
parentaa1cdb8a6138501aa76e7d208afac6598dad27a6 (diff)
Migrate away from QRegExp
It will be moved to Qt5Compat, avoid depending on it where not necessary. Remove usages in Qt Designer, windeployqt and examples. Change-Id: I5f5efc6999e60d995ebbc81fcaf80e7be08711b2 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--examples/assistant/simpletextviewer/findfiledialog.cpp9
-rw-r--r--src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp5
-rw-r--r--src/designer/src/components/widgetbox/widgetboxcategorylistview.h3
-rw-r--r--src/designer/src/components/widgetbox/widgetboxtreewidget.cpp3
-rw-r--r--src/designer/src/lib/shared/rcc.cpp14
-rw-r--r--src/shared/findwidget/itemviewfindwidget.cpp9
-rw-r--r--src/windeployqt/main.cpp18
7 files changed, 43 insertions, 18 deletions
diff --git a/examples/assistant/simpletextviewer/findfiledialog.cpp b/examples/assistant/simpletextviewer/findfiledialog.cpp
index cf64e9a6a..c9cfc8e09 100644
--- a/examples/assistant/simpletextviewer/findfiledialog.cpp
+++ b/examples/assistant/simpletextviewer/findfiledialog.cpp
@@ -59,6 +59,7 @@
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
+#include <QRegularExpression>
#include <QToolButton>
#include <QTreeWidget>
#include <QTreeWidgetItem>
@@ -129,8 +130,10 @@ void FindFileDialog::update()
void FindFileDialog::findFiles()
{
- QRegExp filePattern(fileNameComboBox->currentText() + "*");
- filePattern.setPatternSyntax(QRegExp::Wildcard);
+ QString wildCard = fileNameComboBox->currentText();
+ if (!wildCard.endsWith('*'))
+ wildCard += '*';
+ QRegularExpression filePattern(QRegularExpression::wildcardToRegularExpression(wildCard));
QDir directory(directoryComboBox->currentText());
@@ -138,7 +141,7 @@ void FindFileDialog::findFiles()
QStringList matchingFiles;
for (const QString &file : allFiles) {
- if (filePattern.exactMatch(file))
+ if (filePattern.match(file).hasMatch())
matchingFiles << file;
}
showFiles(matchingFiles);
diff --git a/src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp b/src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp
index 9863da25b..c2fcb40a5 100644
--- a/src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp
+++ b/src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp
@@ -482,9 +482,10 @@ QString WidgetBoxCategoryListView::widgetDomXml(const QDesignerWidgetBoxInterfac
return domXml;
}
-void WidgetBoxCategoryListView::filter(const QRegExp &re)
+void WidgetBoxCategoryListView::filter(const QString &needle, Qt::CaseSensitivity caseSensitivity)
{
- m_proxyModel->setFilterRegExp(re);
+ m_proxyModel->setFilterFixedString(needle);
+ m_proxyModel->setFilterCaseSensitivity(caseSensitivity);
}
QDesignerWidgetBoxInterface::Category WidgetBoxCategoryListView::category() const
diff --git a/src/designer/src/components/widgetbox/widgetboxcategorylistview.h b/src/designer/src/components/widgetbox/widgetboxcategorylistview.h
index 16e651dc2..bb476a6d8 100644
--- a/src/designer/src/components/widgetbox/widgetboxcategorylistview.h
+++ b/src/designer/src/components/widgetbox/widgetboxcategorylistview.h
@@ -40,7 +40,6 @@ class QDesignerFormEditorInterface;
class QDesignerDnDItemInterface;
class QSortFilterProxyModel;
-class QRegExp;
namespace qdesigner_internal {
@@ -85,7 +84,7 @@ signals:
void lastItemRemoved();
public slots:
- void filter(const QRegExp &re);
+ void filter(const QString &needle, Qt::CaseSensitivity caseSensitivity);
void removeCurrentItem();
void editCurrentItem();
diff --git a/src/designer/src/components/widgetbox/widgetboxtreewidget.cpp b/src/designer/src/components/widgetbox/widgetboxtreewidget.cpp
index fc28aa222..9c1112eb8 100644
--- a/src/designer/src/components/widgetbox/widgetboxtreewidget.cpp
+++ b/src/designer/src/components/widgetbox/widgetboxtreewidget.cpp
@@ -966,7 +966,6 @@ void WidgetBoxTreeWidget::dropWidgets(const QVector<QDesignerDnDItemInterface*>
void WidgetBoxTreeWidget::filter(const QString &f)
{
const bool empty = f.isEmpty();
- QRegExp re = empty ? QRegExp() : QRegExp(f, Qt::CaseInsensitive, QRegExp::FixedString);
const int numTopLevels = topLevelItemCount();
bool changed = false;
for (int i = 0; i < numTopLevels; i++) {
@@ -974,7 +973,7 @@ void WidgetBoxTreeWidget::filter(const QString &f)
WidgetBoxCategoryListView *categoryView = categoryViewAt(i);
// Anything changed? -> Enable the category
const int oldCount = categoryView->count(WidgetBoxCategoryListView::FilteredAccess);
- categoryView->filter(re);
+ categoryView->filter(f, Qt::CaseInsensitive);
const int newCount = categoryView->count(WidgetBoxCategoryListView::FilteredAccess);
if (oldCount != newCount) {
changed = true;
diff --git a/src/designer/src/lib/shared/rcc.cpp b/src/designer/src/lib/shared/rcc.cpp
index 050c6f418..6d271bd8a 100644
--- a/src/designer/src/lib/shared/rcc.cpp
+++ b/src/designer/src/lib/shared/rcc.cpp
@@ -38,7 +38,6 @@
#include <QtCore/qfile.h>
#include <QtCore/qiodevice.h>
#include <QtCore/qlocale.h>
-#include <QtCore/qregexp.h>
#include <QtCore/qstack.h>
#include <QtCore/qxmlstream.h>
@@ -951,6 +950,16 @@ void RCCResourceLibrary::writeAddNamespaceFunction(const QByteArray &name)
}
}
+static bool unacceptableChar(QChar qc)
+{
+ if (qc.isDigit())
+ return false;
+ if (!qc.isLetter())
+ return true;
+ auto c = qc.toLower().toLatin1();
+ return c < 'a' || c > 'z';
+}
+
bool RCCResourceLibrary::writeInitializer()
{
if (m_format == C_Code) {
@@ -958,7 +967,8 @@ bool RCCResourceLibrary::writeInitializer()
QString initName = m_initName;
if (!initName.isEmpty()) {
initName.prepend(QLatin1Char('_'));
- initName.replace(QRegExp(QLatin1String("[^a-zA-Z0-9_]")), QLatin1String("_"));
+ std::replace_if(initName.begin(), initName.end(),
+ unacceptableChar, QLatin1Char('_'));
}
//init
diff --git a/src/shared/findwidget/itemviewfindwidget.cpp b/src/shared/findwidget/itemviewfindwidget.cpp
index 5c1a215fa..3ab73f094 100644
--- a/src/shared/findwidget/itemviewfindwidget.cpp
+++ b/src/shared/findwidget/itemviewfindwidget.cpp
@@ -65,6 +65,7 @@
#include <QtWidgets/QAbstractItemView>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QTreeView>
+#include <QtCore/QRegularExpression>
#include <algorithm>
@@ -301,8 +302,12 @@ QModelIndex ItemViewFindWidget::findHelper(const QString &textToFind, bool skipC
Qt::CaseSensitivity cs = caseSensitive() ? Qt::CaseSensitive : Qt::CaseInsensitive;
if (wholeWords()) {
- QString rx = QLatin1String("\\b") + QRegExp::escape(textToFind) + QLatin1String("\\b");
- if (idx.data().toString().indexOf(QRegExp(rx, cs)) >= 0)
+ QString rx = QLatin1String("\\b") + QRegularExpression::escape(textToFind)
+ + QLatin1String("\\b");
+ QRegularExpression re(rx);
+ if (cs == Qt::CaseInsensitive)
+ re.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
+ if (idx.data().toString().indexOf(re) >= 0)
return idx;
} else {
if (idx.data().toString().indexOf(textToFind, 0, cs) >= 0)
diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp
index 4a50959b5..ed1a81a77 100644
--- a/src/windeployqt/main.cpp
+++ b/src/windeployqt/main.cpp
@@ -49,6 +49,7 @@
#include <algorithm>
#include <iostream>
+#include <iterator>
#include <cstdio>
QT_BEGIN_NAMESPACE
@@ -1225,6 +1226,16 @@ static bool updateLibrary(const QString &sourceFileName, const QString &targetDi
return true;
}
+// Find out the ICU version to add the data library icudtXX.dll, which does not
+// show as a dependency.
+static QString getIcuVersion(const QString &libName)
+{
+ QString version;
+ std::copy_if(libName.cbegin(), libName.cend(), std::back_inserter(version),
+ [](QChar c) { return c.isDigit(); });
+ return version;
+}
+
static DeployResult deploy(const Options &options,
const QMap<QString, QString> &qmakeVariables,
QString *errorMessage)
@@ -1317,11 +1328,8 @@ static DeployResult deploy(const Options &options,
if (!icuLibs.isEmpty()) {
// Find out the ICU version to add the data library icudtXX.dll, which does not show
// as a dependency.
- QRegExp numberExpression(QStringLiteral("\\d+"));
- Q_ASSERT(numberExpression.isValid());
- const int index = numberExpression.indexIn(icuLibs.front());
- if (index >= 0) {
- const QString icuVersion = icuLibs.front().mid(index, numberExpression.matchedLength());
+ const QString icuVersion = getIcuVersion(icuLibs.constFirst());
+ if (!icuVersion.isEmpty()) {
if (optVerboseLevel > 1)
std::wcout << "Adding ICU version " << icuVersion << '\n';
icuLibs.push_back(QStringLiteral("icudt") + icuVersion + QLatin1String(windowsSharedLibrarySuffix));