]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Port QRegExp to QRegularExpression
authorAhmad Samir <a.samirh78@gmail.com>
Tue, 24 Dec 2019 15:15:44 +0000 (17:15 +0200)
committerAhmad Samir <a.samirh78@gmail.com>
Wed, 6 May 2020 09:37:38 +0000 (11:37 +0200)
Summary:
Port QRegExp::exactMatch() with QRegularExpression::anchoredPattern().
Port QRegExp::Wildcard with QRegularExpression::wildcardToRegularExpression().
Note that QRegularExpression::wildcardToRegularExpression() returns an anchored
pattern.

Test Plan:
Using the filter bar in dolphin works as before.

All unit tests pass, except:
- kfileitemmodeltest (which is unrelated AFAICS); it fails on master too
- placesitemmodeltest, which fails on master too

Reviewers: #dolphin, elvisangelaccio, meven

Reviewed By: #dolphin, elvisangelaccio

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D26215

src/dolphinpart.cpp
src/kitemviews/private/kfileitemmodelfilter.cpp
src/kitemviews/private/kfileitemmodelfilter.h
src/views/dolphinview.cpp
src/views/dolphinview.h

index 0c41b2becaeecab1fac93cde86fc143978818ac1..12c361011dffd14330e62bae4ebf42c06997544a 100644 (file)
@@ -54,6 +54,7 @@
 #include <QInputDialog>
 #include <QKeyEvent>
 #include <QMenu>
+#include <QRegularExpression>
 #include <QStandardPaths>
 #include <QTextDocument>
 
@@ -507,7 +508,7 @@ void DolphinPart::openSelectionDialog(const QString& title, const QString& text,
     const QString pattern = QInputDialog::getText(m_view, title, text, QLineEdit::Normal, QStringLiteral("*"), &okClicked);
 
     if (okClicked && !pattern.isEmpty()) {
-        QRegExp patternRegExp(pattern, Qt::CaseSensitive, QRegExp::Wildcard);
+        const QRegularExpression patternRegExp(QRegularExpression::wildcardToRegularExpression(pattern));
         m_view->selectItems(patternRegExp, selectItems);
     }
 }
index fc56cc71d5e7aa38f27a4988f0ac6e1d09663f2e..bcd875132bb2f7e1138fdba12fe037f4bccc5617 100644 (file)
@@ -20,8 +20,9 @@
 
 #include "kfileitemmodelfilter.h"
 
-#include <KFileItem>
+#include <QRegularExpression>
 
+#include <KFileItem>
 
 KFileItemModelFilter::KFileItemModelFilter() :
     m_useRegExp(false),
@@ -44,12 +45,10 @@ void KFileItemModelFilter::setPattern(const QString& filter)
 
     if (filter.contains('*') || filter.contains('?') || filter.contains('[')) {
         if (!m_regExp) {
-            m_regExp = new QRegExp();
-            m_regExp->setCaseSensitivity(Qt::CaseInsensitive);
-            m_regExp->setMinimal(false);
-            m_regExp->setPatternSyntax(QRegExp::WildcardUnix);
+            m_regExp = new QRegularExpression();
+            m_regExp->setPatternOptions(QRegularExpression::CaseInsensitiveOption);
         }
-        m_regExp->setPattern(filter);
+        m_regExp->setPattern(QRegularExpression::wildcardToRegularExpression(filter));
         m_useRegExp = m_regExp->isValid();
     } else {
         m_useRegExp = false;
@@ -103,7 +102,7 @@ bool KFileItemModelFilter::matches(const KFileItem& item) const
 bool KFileItemModelFilter::matchesPattern(const KFileItem& item) const
 {
     if (m_useRegExp) {
-        return m_regExp->exactMatch(item.text());
+        return m_regExp->match(item.text()).hasMatch();
     } else {
         return item.text().toLower().contains(m_lowerCasePattern);
     }
index f9f588aba2a024bdd3f6d9cbd6bfe52b2bc55d1a..b56e0ad5bff0430ffbd2b01e36de3af26bfb0178 100644 (file)
@@ -26,7 +26,7 @@
 #include <QStringList>
 
 class KFileItem;
-class QRegExp;
+class QRegularExpression;
 
 /**
  * @brief Allows to check whether an item of the KFileItemModel
@@ -83,7 +83,7 @@ private:
 
     bool m_useRegExp;           // If true, m_regExp is used for filtering,
                                 // otherwise m_lowerCaseFilter is used.
-    QRegExp* m_regExp;
+    QRegularExpression *m_regExp;
     QString m_lowerCasePattern; // Lowercase version of m_filter for
                                 // faster comparison in matches().
     QString m_pattern;          // Property set by setPattern().
index f0dc17837a5ddcad2bb3a18a50aa5bb19382fb1e..b433ca343d11e2348ea7a62d3071ce347cb3bfb3 100644 (file)
@@ -364,7 +364,7 @@ void DolphinView::markUrlAsCurrent(const QUrl &url)
     m_scrollToCurrentItem = true;
 }
 
-void DolphinView::selectItems(const QRegExp& pattern, bool enabled)
+void DolphinView::selectItems(const QRegularExpression &regexp, bool enabled)
 {
     const KItemListSelectionManager::SelectionMode mode = enabled
                                                         ? KItemListSelectionManager::Select
@@ -373,7 +373,7 @@ void DolphinView::selectItems(const QRegExp& pattern, bool enabled)
 
     for (int index = 0; index < m_model->count(); index++) {
         const KFileItem item = m_model->fileItem(index);
-        if (pattern.exactMatch(item.text())) {
+        if (regexp.match(item.text()).hasMatch()) {
             // An alternative approach would be to store the matching items in a KItemSet and
             // select them in one go after the loop, but we'd need a new function
             // KItemListSelectionManager::setSelected(KItemSet, SelectionMode mode)
index 83c5f92a4dbdd01040ba28155bf2a8930ce5fb27..ca0f62b232ad9fa61afb6abf5a1a8418065e3728 100644 (file)
@@ -46,7 +46,7 @@ class ToolTipManager;
 class VersionControlObserver;
 class ViewProperties;
 class QGraphicsSceneDragDropEvent;
-class QRegExp;
+class QRegularExpression;
 
 /**
  * @short Represents a view for the directory content.
@@ -183,10 +183,16 @@ public:
     void markUrlAsCurrent(const QUrl& url);
 
     /**
-     * All items that match to the pattern \a pattern will get selected
-     * if \a enabled is true and deselected if  \a enabled is false.
+     * All items that match the regular expression \a regexp will get selected
+     * if \a enabled is true and deselected if \a enabled is false.
+     *
+     * Note that to match the whole string the pattern should be anchored:
+     * - you can anchor the pattern with QRegularExpression::anchoredPattern()
+     * - if you use QRegularExpresssion::wildcardToRegularExpression(), don't use
+     *   QRegularExpression::anchoredPattern() as the former already returns an
+     *   anchored pattern
      */
-    void selectItems(const QRegExp& pattern, bool enabled);
+    void selectItems(const QRegularExpression &regexp, bool enabled);
 
     /**
      * Sets the zoom level to \a level. It is assured that the used