┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2024-01-06 11:40:57 +0100
committerMéven Car <[email protected]>2024-01-13 09:07:33 +0000
commit9691afbc507ee480d4d129a6fff90b6b926aed62 (patch)
tree3296e655acf67f6816aeef0b312c93f2199c1fc2
parentc8dffc433caacc9955b3054f6255ae50176e5533 (diff)
Add setting also hide application/x-trash files when hiding hidden files
BUG: 475805
-rw-r--r--src/kitemviews/kfileitemmodel.cpp23
-rw-r--r--src/settings/dolphin_generalsettings.kcfg4
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.cpp12
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.h1
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 @@
<default>0</default>
<emit signal="sortingChoiceChanged" />
</entry>
+ <entry name="HideXTrashFile" type="Bool">
+ <label>Also hide files with application/x-trash mimetype</label>
+ <default>false</default>
+ </entry>
</group>
<group name="Notification Messages">
<entry name="ConfirmOpenManyFolders" type="Bool">
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 <QButtonGroup>
#include <QCheckBox>
#include <QFormLayout>
+#include <QMimeDatabase>
#include <QVBoxLayout>
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