┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/private
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2023-06-15 12:32:00 +0200
committerMéven Car <[email protected]>2023-06-17 07:09:50 +0000
commit7f3967cf38f8ab707681981dd0bc6b220c3dbf83 (patch)
tree9364c916a029c4172e4e806dac1e50a75012e5d0 /src/kitemviews/private
parent9c614949d65ab993af7a65bfb5e2d6bd22ebe084 (diff)
Hide application/x-trash files following showHidenFiles
BUG: 3212
Diffstat (limited to 'src/kitemviews/private')
-rw-r--r--src/kitemviews/private/kfileitemmodelfilter.cpp32
-rw-r--r--src/kitemviews/private/kfileitemmodelfilter.h8
2 files changed, 34 insertions, 6 deletions
diff --git a/src/kitemviews/private/kfileitemmodelfilter.cpp b/src/kitemviews/private/kfileitemmodelfilter.cpp
index f199c314f..0f9530801 100644
--- a/src/kitemviews/private/kfileitemmodelfilter.cpp
+++ b/src/kitemviews/private/kfileitemmodelfilter.cpp
@@ -8,6 +8,8 @@
#include <QRegularExpression>
+#include <algorithm>
+
#include <KFileItem>
KFileItemModelFilter::KFileItemModelFilter()
@@ -56,15 +58,25 @@ QStringList KFileItemModelFilter::mimeTypes() const
return m_mimeTypes;
}
+void KFileItemModelFilter::setExcludeMimeTypes(const QStringList &types)
+{
+ m_excludeMimeTypes = types;
+}
+
+QStringList KFileItemModelFilter::excludeMimeTypes() const
+{
+ return m_excludeMimeTypes;
+}
+
bool KFileItemModelFilter::hasSetFilters() const
{
- return (!m_pattern.isEmpty() || !m_mimeTypes.isEmpty());
+ return (!m_pattern.isEmpty() || !m_mimeTypes.isEmpty() || !m_excludeMimeTypes.isEmpty());
}
bool KFileItemModelFilter::matches(const KFileItem &item) const
{
const bool hasPatternFilter = !m_pattern.isEmpty();
- const bool hasMimeTypesFilter = !m_mimeTypes.isEmpty();
+ const bool hasMimeTypesFilter = !m_mimeTypes.isEmpty() || !m_excludeMimeTypes.isEmpty();
// If no filter is set, return true.
if (!hasPatternFilter && !hasMimeTypesFilter) {
@@ -95,10 +107,18 @@ bool KFileItemModelFilter::matchesPattern(const KFileItem &item) const
bool KFileItemModelFilter::matchesType(const KFileItem &item) const
{
- for (const QString &mimeType : qAsConst(m_mimeTypes)) {
- if (item.mimetype() == mimeType) {
- return true;
- }
+ bool excluded = std::any_of(m_excludeMimeTypes.constBegin(), m_excludeMimeTypes.constEnd(), [item](const QString &excludeMimetype) {
+ return item.mimetype() == excludeMimetype;
+ });
+ if (excluded) {
+ return false;
+ }
+
+ bool included = std::any_of(m_mimeTypes.constBegin(), m_mimeTypes.constEnd(), [item](const QString &mimeType) {
+ return item.mimetype() == mimeType;
+ });
+ if (included) {
+ return true;
}
return m_mimeTypes.isEmpty();
diff --git a/src/kitemviews/private/kfileitemmodelfilter.h b/src/kitemviews/private/kfileitemmodelfilter.h
index 959590da8..ce6cbeebb 100644
--- a/src/kitemviews/private/kfileitemmodelfilter.h
+++ b/src/kitemviews/private/kfileitemmodelfilter.h
@@ -45,6 +45,13 @@ public:
QStringList mimeTypes() const;
/**
+ * Set the list of mimetypes that are used for comparison and excluded with the
+ * item in KFileItemModelFilter::matchesMimeType.
+ */
+ void setExcludeMimeTypes(const QStringList &types);
+ QStringList excludeMimeTypes() const;
+
+ /**
* @return True if either the pattern or mimetype filters has been set.
*/
bool hasSetFilters() const;
@@ -73,5 +80,6 @@ private:
// faster comparison in matches().
QString m_pattern; // Property set by setPattern().
QStringList m_mimeTypes; // Property set by setMimeTypes()
+ QStringList m_excludeMimeTypes; // Property set by setExcludeMimeTypes()
};
#endif