1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-04 17:30:55 +00:00

Add setting also hide application/x-trash files when hiding hidden files

BUG: 475805
This commit is contained in:
Méven Car 2024-01-06 11:40:57 +01:00 committed by Méven Car
parent c8dffc433c
commit 9691afbc50
4 changed files with 25 additions and 15 deletions

View 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();

View File

@ -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">

View 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);

View File

@ -47,6 +47,7 @@ private:
QCheckBox *m_renameInline = nullptr;
QCheckBox *m_openArchivesAsFolder = nullptr;
QCheckBox *m_autoExpandFolders = nullptr;
QCheckBox *m_hideXtrashFiles = nullptr;
};
#endif