]>
cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/private/kfileitemmodelfilter.cpp
2 * SPDX-FileCopyrightText: 2011 Janardhan Reddy <annapareddyjanardhanreddy@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "kfileitemmodelfilter.h"
9 #include <QRegularExpression>
13 KFileItemModelFilter::KFileItemModelFilter()
16 , m_lowerCasePattern()
21 KFileItemModelFilter::~KFileItemModelFilter()
27 void KFileItemModelFilter::setPattern(const QString
&filter
)
30 m_lowerCasePattern
= filter
.toLower();
32 if (filter
.contains('*') || filter
.contains('?') || filter
.contains('[')) {
34 m_regExp
= new QRegularExpression();
35 m_regExp
->setPatternOptions(QRegularExpression::CaseInsensitiveOption
);
37 m_regExp
->setPattern(QRegularExpression::wildcardToRegularExpression(filter
));
38 m_useRegExp
= m_regExp
->isValid();
44 QString
KFileItemModelFilter::pattern() const
49 void KFileItemModelFilter::setMimeTypes(const QStringList
&types
)
54 QStringList
KFileItemModelFilter::mimeTypes() const
59 bool KFileItemModelFilter::hasSetFilters() const
61 return (!m_pattern
.isEmpty() || !m_mimeTypes
.isEmpty());
64 bool KFileItemModelFilter::matches(const KFileItem
&item
) const
66 const bool hasPatternFilter
= !m_pattern
.isEmpty();
67 const bool hasMimeTypesFilter
= !m_mimeTypes
.isEmpty();
69 // If no filter is set, return true.
70 if (!hasPatternFilter
&& !hasMimeTypesFilter
) {
74 // If both filters are set, return true when both filters are matched
75 if (hasPatternFilter
&& hasMimeTypesFilter
) {
76 return (matchesPattern(item
) && matchesType(item
));
79 // If only one filter is set, return true when that filter is matched
80 if (hasPatternFilter
) {
81 return matchesPattern(item
);
84 return matchesType(item
);
87 bool KFileItemModelFilter::matchesPattern(const KFileItem
&item
) const
90 return m_regExp
->match(item
.text()).hasMatch();
92 return item
.text().toLower().contains(m_lowerCasePattern
);
96 bool KFileItemModelFilter::matchesType(const KFileItem
&item
) const
98 for (const QString
&mimeType
: qAsConst(m_mimeTypes
)) {
99 if (item
.mimetype() == mimeType
) {
104 return m_mimeTypes
.isEmpty();