]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add setting also hide application/x-trash files when hiding hidden files
authorMéven Car <meven@kde.org>
Sat, 6 Jan 2024 10:40:57 +0000 (11:40 +0100)
committerMéven Car <meven.car@kdemail.net>
Sat, 13 Jan 2024 09:07:33 +0000 (09:07 +0000)
BUG: 475805

src/kitemviews/kfileitemmodel.cpp
src/settings/dolphin_generalsettings.kcfg
src/settings/viewmodes/generalviewsettingspage.cpp
src/settings/viewmodes/generalviewsettingspage.h

index 4463b37ae3f747fc54673c6c6ae9608a6b7e38fc..5f4f0bb9ada11195d08360c89c5041dc92edd271 100644 (file)
@@ -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();
index 2abd7da49c6963953ec3949922d293d2c8e247b5..c84cc561791f1ca6e9c96e6cc323b68b3159a332 100644 (file)
             <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">
index a81d46dd2616caa8596590c2cb9673ff260a3dd7..08048ea889fad637132a114b04bae8462427e56d 100644 (file)
@@ -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);
index c0e40db59110824fef25ebf2413ab9aee81cc3cd..234fb03cbf6851a6bb8d2f764519b7c0a77e361b 100644 (file)
@@ -47,6 +47,7 @@ private:
     QCheckBox *m_renameInline = nullptr;
     QCheckBox *m_openArchivesAsFolder = nullptr;
     QCheckBox *m_autoExpandFolders = nullptr;
+    QCheckBox *m_hideXtrashFiles = nullptr;
 };
 
 #endif