X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a0c0b43b97017280f6290fc720f41307a5b85d22..b0a9907b9cb18e7c1a566f67a90206f067b7eb5e:/src/trash/dolphintrash.cpp diff --git a/src/trash/dolphintrash.cpp b/src/trash/dolphintrash.cpp index 236f9817d..8f57e6c00 100644 --- a/src/trash/dolphintrash.cpp +++ b/src/trash/dolphintrash.cpp @@ -7,19 +7,16 @@ #include "dolphintrash.h" -#include -#include #include #include +#include #include +#include +#include +#include +#include -#include -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0) -#include -#else -#include -#include -#endif +#include Trash::Trash() : m_trashDirLister(new KDirLister()) @@ -35,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()) { + const Solid::StorageAccess *access = dev.as(); + 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()) { + m_trashDirLister->updateDirectory(QUrl(QStringLiteral("trash:/"))); + } + }); + m_trashDirLister->openUrl(QUrl(QStringLiteral("trash:/"))); } @@ -56,33 +73,21 @@ static void notifyEmptied() i18n("Trash Emptied"), i18n("The Trash was emptied."), QStringLiteral("user-trash"), - nullptr, KNotification::DefaultEvent); } void Trash::empty(QWidget *window) { -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0) using Iface = KIO::AskUserActionInterface; auto *emptyJob = new KIO::DeleteOrTrashJob(QList{}, Iface::EmptyTrash, Iface::DefaultConfirmation, window); QObject::connect(emptyJob, &KIO::Job::result, notifyEmptied); emptyJob->start(); -#else - KIO::JobUiDelegate uiDelegate; - uiDelegate.setWindow(window); - bool confirmed = uiDelegate.askDeleteConfirmation(QList(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation); - if (confirmed) { - KIO::Job* job = KIO::emptyTrash(); - KJobWidgets::setWindow(job, window); - job->uiDelegate()->setAutoErrorHandlingEnabled(true); - QObject::connect(emptyJob, &KIO::Job::result, notifyEmptied); - } -#endif } bool Trash::isEmpty() { KConfig trashConfig(QStringLiteral("trashrc"), KConfig::SimpleConfig); - return (trashConfig.group("Status").readEntry("Empty", true)); + return (trashConfig.group(QStringLiteral("Status")).readEntry("Empty", true)); } +#include "moc_dolphintrash.cpp"