1 /* 2 * SPDX-FileCopyrightText: 2011 Janardhan Reddy <annapareddyjanardhanreddy@gmail.com> 3 * 4 * SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #ifndef KFILEITEMMODELFILTER_H 8 #define KFILEITEMMODELFILTER_H 9 10 #include "dolphin_export.h" 11 12 #include <QStringList> 13 14 class KFileItem; 15 class QRegularExpression; 16 17 /** 18 * @brief Allows to check whether an item of the KFileItemModel 19 * matches with a set filter-string. 20 * 21 * Currently the filter is only checked for the KFileItem::text() 22 * property of the KFileItem, but this might get extended in 23 * future. 24 */ 25 class DOLPHIN_EXPORT KFileItemModelFilter 26 { 27 28 public: 29 KFileItemModelFilter(); 30 virtual ~KFileItemModelFilter(); 31 32 /** 33 * Sets the pattern that is used for a comparison with the item 34 * in KFileItemModelFilter::matches(). Per default the pattern 35 * defines a sub-string. As soon as the pattern contains at least 36 * a '*', '?' or '[' the pattern represents a regular expression. 37 */ 38 void setPattern(const QString& pattern); 39 QString pattern() const; 40 41 /** 42 * Set the list of mimetypes that are used for comparison with the 43 * item in KFileItemModelFilter::matchesMimeType. 44 */ 45 void setMimeTypes(const QStringList& types); 46 QStringList mimeTypes() const; 47 48 /** 49 * @return True if either the pattern or mimetype filters has been set. 50 */ 51 bool hasSetFilters() const; 52 53 /** 54 * @return True if the item matches with the pattern defined by 55 * @ref setPattern() or @ref setMimeTypes 56 */ 57 bool matches(const KFileItem& item) const; 58 59 private: 60 /** 61 * @return True if item matches pattern set by @ref setPattern. 62 */ 63 bool matchesPattern(const KFileItem& item) const; 64 65 /** 66 * @return True if item matches mimetypes set by @ref setMimeTypes. 67 */ 68 bool matchesType(const KFileItem& item) const; 69 70 bool m_useRegExp; // If true, m_regExp is used for filtering, 71 // otherwise m_lowerCaseFilter is used. 72 QRegularExpression *m_regExp; 73 QString m_lowerCasePattern; // Lowercase version of m_filter for 74 // faster comparison in matches(). 75 QString m_pattern; // Property set by setPattern(). 76 QStringList m_mimeTypes; // Property set by setMimeTypes() 77 }; 78 #endif 79 80 81