#include <QInputDialog>
#include <QKeyEvent>
#include <QMenu>
+#include <QRegularExpression>
#include <QStandardPaths>
#include <QTextDocument>
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);
}
}
#include "kfileitemmodelfilter.h"
-#include <KFileItem>
+#include <QRegularExpression>
+#include <KFileItem>
KFileItemModelFilter::KFileItemModelFilter() :
m_useRegExp(false),
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;
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);
}
#include <QStringList>
class KFileItem;
-class QRegExp;
+class QRegularExpression;
/**
* @brief Allows to check whether an item of the KFileItemModel
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().
m_scrollToCurrentItem = true;
}
-void DolphinView::selectItems(const QRegExp& pattern, bool enabled)
+void DolphinView::selectItems(const QRegularExpression ®exp, bool enabled)
{
const KItemListSelectionManager::SelectionMode mode = enabled
? KItemListSelectionManager::Select
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)
class VersionControlObserver;
class ViewProperties;
class QGraphicsSceneDragDropEvent;
-class QRegExp;
+class QRegularExpression;
/**
* @short Represents a view for the directory content.
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 ®exp, bool enabled);
/**
* Sets the zoom level to \a level. It is assured that the used