┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
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/kfileitemmodel.cpp
parent9c614949d65ab993af7a65bfb5e2d6bd22ebe084 (diff)
Hide application/x-trash files following showHidenFiles
BUG: 3212
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 5ac6f9be1..629332703 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -105,6 +105,8 @@ KFileItemModel::KFileItemModel(QObject *parent)
connect(m_resortAllItemsTimer, &QTimer::timeout, this, &KFileItemModel::resortAllItems);
connect(GeneralSettings::self(), &GeneralSettings::sortingChoiceChanged, this, &KFileItemModel::slotSortingChoiceChanged);
+
+ setShowTrashMime(m_dirLister->showHiddenFiles());
}
KFileItemModel::~KFileItemModel()
@@ -238,6 +240,27 @@ bool KFileItemModel::sortHiddenLast() const
return m_sortHiddenLast;
}
+void KFileItemModel::setShowTrashMime(bool show)
+{
+ const auto trashMime = QStringLiteral("application/x-trash");
+ QStringList excludeFilter = m_filter.excludeMimeTypes();
+ bool wasShown = !excludeFilter.contains(trashMime);
+
+ if (show) {
+ if (!wasShown) {
+ excludeFilter.removeAll(trashMime);
+ }
+ } else {
+ if (wasShown) {
+ excludeFilter.append(trashMime);
+ }
+ }
+
+ if (wasShown != show) {
+ setExcludeMimeTypeFilter(excludeFilter);
+ }
+}
+
void KFileItemModel::setShowHiddenFiles(bool show)
{
#if KIO_VERSION < QT_VERSION_CHECK(5, 100, 0)
@@ -245,6 +268,7 @@ void KFileItemModel::setShowHiddenFiles(bool show)
#else
m_dirLister->setShowHiddenFiles(show);
#endif
+ setShowTrashMime(show);
m_dirLister->emitChanges();
if (show) {
dispatchPendingItemsToInsert();
@@ -740,6 +764,20 @@ QStringList KFileItemModel::mimeTypeFilters() const
return m_filter.mimeTypes();
}
+void KFileItemModel::setExcludeMimeTypeFilter(const QStringList &filters)
+{
+ if (m_filter.excludeMimeTypes() != filters) {
+ dispatchPendingItemsToInsert();
+ m_filter.setExcludeMimeTypes(filters);
+ applyFilters();
+ }
+}
+
+QStringList KFileItemModel::excludeMimeTypeFilter() const
+{
+ return m_filter.excludeMimeTypes();
+}
+
void KFileItemModel::applyFilters()
{
// ===STEP 1===
@@ -1823,7 +1861,7 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem &item,
}
if (m_requestRole[IsHiddenRole]) {
- data.insert(sharedValue("isHidden"), item.isHidden());
+ data.insert(sharedValue("isHidden"), item.isHidden() || item.mimetype() == QStringLiteral("application/x-trash"));
}
if (m_requestRole[NameRole]) {