From 9691afbc507ee480d4d129a6fff90b6b926aed62 Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A9ven=20Car?= Date: Sat, 6 Jan 2024 11:40:57 +0100 Subject: [PATCH] Add setting also hide application/x-trash files when hiding hidden files BUG: 475805 --- src/kitemviews/kfileitemmodel.cpp | 23 +++++++------------ src/settings/dolphin_generalsettings.kcfg | 4 ++++ .../viewmodes/generalviewsettingspage.cpp | 12 ++++++++++ .../viewmodes/generalviewsettingspage.h | 1 + 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 4463b37ae..5f4f0bb9a 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -105,7 +105,7 @@ KFileItemModel::KFileItemModel(QObject *parent) connect(GeneralSettings::self(), &GeneralSettings::sortingChoiceChanged, this, &KFileItemModel::slotSortingChoiceChanged); - setShowTrashMime(m_dirLister->showHiddenFiles()); + setShowTrashMime(m_dirLister->showHiddenFiles() || !GeneralSettings::hideXTrashFile()); } KFileItemModel::~KFileItemModel() @@ -239,25 +239,18 @@ bool KFileItemModel::sortHiddenLast() const return m_sortHiddenLast; } -void KFileItemModel::setShowTrashMime(bool show) +void KFileItemModel::setShowTrashMime(bool showTrashMime) { 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 (showTrashMime) { + excludeFilter.removeAll(trashMime); + } else if (!excludeFilter.contains(trashMime)) { + excludeFilter.append(trashMime); } - if (wasShown != show) { - setExcludeMimeTypeFilter(excludeFilter); - } + setExcludeMimeTypeFilter(excludeFilter); } void KFileItemModel::scheduleResortAllItems() @@ -270,7 +263,7 @@ void KFileItemModel::scheduleResortAllItems() void KFileItemModel::setShowHiddenFiles(bool show) { m_dirLister->setShowHiddenFiles(show); - setShowTrashMime(show); + setShowTrashMime(show || !GeneralSettings::hideXTrashFile()); m_dirLister->emitChanges(); if (show) { dispatchPendingItemsToInsert(); diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg index 2abd7da49..c84cc5617 100644 --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -141,6 +141,10 @@ 0 + + + false + diff --git a/src/settings/viewmodes/generalviewsettingspage.cpp b/src/settings/viewmodes/generalviewsettingspage.cpp index a81d46dd2..08048ea88 100644 --- a/src/settings/viewmodes/generalviewsettingspage.cpp +++ b/src/settings/viewmodes/generalviewsettingspage.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include GeneralViewSettingsPage::GeneralViewSettingsPage(const QUrl &url, QWidget *parent) @@ -61,6 +62,14 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(const QUrl &url, QWidget *paren m_renameInline = new QCheckBox(i18nc("option:check", "Rename inline")); topLayout->addRow(QString(), m_renameInline); + m_hideXtrashFiles = new QCheckBox(i18nc("option:check", "Also hide backup files while hiding hidden files")); + QMimeDatabase db; + QMimeType mime = db.mimeTypeForName(QStringLiteral("application/x-trash")); + m_hideXtrashFiles->setToolTip(i18nc("@info:tooltip %1 are the file patterns for mimetype application/x-trash", + "Backup files are the files whose mime-type is application/x-trash, patterns: %1", + (mime.globPatterns().join(", ")))); + topLayout->addRow(QString(), m_hideXtrashFiles); + loadSettings(); connect(m_localViewProps, &QRadioButton::toggled, this, &GeneralViewSettingsPage::changed); @@ -73,6 +82,7 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(const QUrl &url, QWidget *paren #endif connect(m_showSelectionToggle, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed); connect(m_renameInline, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed); + connect(m_hideXtrashFiles, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed); } GeneralViewSettingsPage::~GeneralViewSettingsPage() @@ -90,6 +100,7 @@ void GeneralViewSettingsPage::applySettings() #endif settings->setShowSelectionToggle(m_showSelectionToggle->isChecked()); settings->setRenameInline(m_renameInline->isChecked()); + settings->setHideXTrashFile(m_hideXtrashFiles->isChecked()); settings->setAutoExpandFolders(m_autoExpandFolders->isChecked()); settings->save(); if (useGlobalViewProps) { @@ -120,6 +131,7 @@ void GeneralViewSettingsPage::loadSettings() #endif m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle()); m_renameInline->setChecked(GeneralSettings::renameInline()); + m_hideXtrashFiles->setChecked(GeneralSettings::hideXTrashFile()); m_localViewProps->setChecked(!useGlobalViewProps); m_globalViewProps->setChecked(useGlobalViewProps); diff --git a/src/settings/viewmodes/generalviewsettingspage.h b/src/settings/viewmodes/generalviewsettingspage.h index c0e40db59..234fb03cb 100644 --- a/src/settings/viewmodes/generalviewsettingspage.h +++ b/src/settings/viewmodes/generalviewsettingspage.h @@ -47,6 +47,7 @@ private: QCheckBox *m_renameInline = nullptr; QCheckBox *m_openArchivesAsFolder = nullptr; QCheckBox *m_autoExpandFolders = nullptr; + QCheckBox *m_hideXtrashFiles = nullptr; }; #endif -- 2.47.3