diff --git a/src/core/kcoredirlister.h b/src/core/kcoredirlister.h --- a/src/core/kcoredirlister.h +++ b/src/core/kcoredirlister.h @@ -590,6 +590,7 @@ * @param name the name to filter * @param filters a list of regular expressions for filtering */ + // TODO KF6 remove virtual bool doNameFilter(const QString &name, const QList &filters) const; /** @@ -599,6 +600,7 @@ * @param mime the mime type to filter * @param filters the list of mime types to filter */ + // TODO KF6 remove virtual bool doMimeFilter(const QString &mime, const QStringList &filters) const; /** diff --git a/src/core/kcoredirlister.cpp b/src/core/kcoredirlister.cpp --- a/src/core/kcoredirlister.cpp +++ b/src/core/kcoredirlister.cpp @@ -30,7 +30,7 @@ #include "kiocoredebug.h" #include "../pathhelpers_p.h" -#include +#include #include #include #include @@ -2302,7 +2302,9 @@ // Split on white space const QStringList list = nameFilter.split(QLatin1Char(' '), QString::SkipEmptyParts); for (const QString &filter : list) { - d->settings.lstFilters.append(QRegExp(filter, Qt::CaseInsensitive, QRegExp::Wildcard)); + d->settings.lstFilters.append( + QRegularExpression(QRegularExpression::wildcardToRegularExpression(filter), + QRegularExpression::CaseInsensitiveOption)); } } @@ -2349,7 +2351,13 @@ bool KCoreDirLister::matchesFilter(const QString &name) const { - return doNameFilter(name, d->settings.lstFilters); + for (const QRegularExpression &filter : d->settings.lstFilters) { + if (filter.match(name).hasMatch()) { + return true; + } + } + + return false; } bool KCoreDirLister::matchesMimeFilter(const QString &mime) const diff --git a/src/core/kcoredirlister_p.h b/src/core/kcoredirlister_p.h --- a/src/core/kcoredirlister_p.h +++ b/src/core/kcoredirlister_p.h @@ -34,6 +34,7 @@ #include #include +class QRegularExpression; class KCoreDirLister; namespace KIO { @@ -144,7 +145,7 @@ FilterSettings() : isShowingDotFiles(false), dirOnlyMode(false) {} bool isShowingDotFiles; bool dirOnlyMode; - QList lstFilters; + QVector lstFilters; QStringList mimeFilter; QStringList mimeExcludeFilter; };