┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/trash/dolphintrash.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/trash/dolphintrash.cpp b/src/trash/dolphintrash.cpp
index 0bb61ff28..8f57e6c00 100644
--- a/src/trash/dolphintrash.cpp
+++ b/src/trash/dolphintrash.cpp
@@ -12,6 +12,9 @@
#include <KIO/DeleteOrTrashJob>
#include <KLocalizedString>
#include <KNotification>
+#include <Solid/Device>
+#include <Solid/DeviceNotifier>
+#include <Solid/StorageAccess>
#include <QList>
@@ -29,6 +32,26 @@ Trash::Trash()
};
connect(m_trashDirLister, &KCoreDirLister::completed, this, trashDirContentChanged);
connect(m_trashDirLister, &KDirLister::itemsDeleted, this, trashDirContentChanged);
+
+ // Update trash directory when removable storage devices are changed to keep it in sync with the
+ // storage device .Trash-1000 folders
+ Solid::DeviceNotifier *notifier = Solid::DeviceNotifier::instance();
+ connect(notifier, &Solid::DeviceNotifier::deviceAdded, this, [this](const QString &device) {
+ const Solid::Device dev(device);
+ if (dev.isValid() && dev.is<Solid::StorageAccess>()) {
+ const Solid::StorageAccess *access = dev.as<Solid::StorageAccess>();
+ connect(access, &Solid::StorageAccess::accessibilityChanged, this, [this]() {
+ m_trashDirLister->updateDirectory(QUrl(QStringLiteral("trash:/")));
+ });
+ }
+ });
+ connect(notifier, &Solid::DeviceNotifier::deviceRemoved, this, [this](const QString &device) {
+ const Solid::Device dev(device);
+ if (dev.isValid() && dev.is<Solid::StorageAccess>()) {
+ m_trashDirLister->updateDirectory(QUrl(QStringLiteral("trash:/")));
+ }
+ });
+
m_trashDirLister->openUrl(QUrl(QStringLiteral("trash:/")));
}