]>
cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/private/kfileitemmodelfilter.cpp
6a2a4177fd2363eb69a1bbc29a4d2760c2ea241c
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() :
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());
65 bool KFileItemModelFilter::matches(const KFileItem
& item
) const
67 const bool hasPatternFilter
= !m_pattern
.isEmpty();
68 const bool hasMimeTypesFilter
= !m_mimeTypes
.isEmpty();
70 // If no filter is set, return true.
71 if (!hasPatternFilter
&& !hasMimeTypesFilter
) {
75 // If both filters are set, return true when both filters are matched
76 if (hasPatternFilter
&& hasMimeTypesFilter
) {
77 return (matchesPattern(item
) && matchesType(item
));
80 // If only one filter is set, return true when that filter is matched
81 if (hasPatternFilter
) {
82 return matchesPattern(item
);
85 return matchesType(item
);
88 bool KFileItemModelFilter::matchesPattern(const KFileItem
& item
) const
91 return m_regExp
->match(item
.text()).hasMatch();
93 return item
.text().toLower().contains(m_lowerCasePattern
);
97 bool KFileItemModelFilter::matchesType(const KFileItem
& item
) const
99 for (const QString
& mimeType
: qAsConst(m_mimeTypes
)) {
100 if (item
.mimetype() == mimeType
) {
105 return m_mimeTypes
.isEmpty();