diff options
Diffstat (limited to 'src/trash')
| -rw-r--r-- | src/trash/dolphintrash.cpp | 40 | ||||
| -rw-r--r-- | src/trash/dolphintrash.h | 2 |
2 files changed, 29 insertions, 13 deletions
diff --git a/src/trash/dolphintrash.cpp b/src/trash/dolphintrash.cpp index 1446ab388..236f9817d 100644 --- a/src/trash/dolphintrash.cpp +++ b/src/trash/dolphintrash.cpp @@ -7,15 +7,20 @@ #include "dolphintrash.h" -#include <KIO/JobUiDelegate> -#include <kio_version.h> -#include <KJobWidgets> #include <QList> #include <KNotification> #include <KConfig> #include <KConfigGroup> #include <KLocalizedString> +#include <kio_version.h> +#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0) +#include <KIO/DeleteOrTrashJob> +#else +#include <KIO/JobUiDelegate> +#include <KJobWidgets> +#endif + Trash::Trash() : m_trashDirLister(new KDirLister()) { @@ -44,8 +49,25 @@ Trash &Trash::instance() return result; } -KIO::Job *Trash::empty(QWidget *window) +static void notifyEmptied() +{ + // As long as KIO doesn't do this, do it ourselves + KNotification::event(QStringLiteral("Trash: emptied"), + 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<QUrl>{}, 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<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation); @@ -53,15 +75,9 @@ KIO::Job *Trash::empty(QWidget *window) KIO::Job* job = KIO::emptyTrash(); KJobWidgets::setWindow(job, window); job->uiDelegate()->setAutoErrorHandlingEnabled(true); - // as long as KIO doesn't do this, do it ourselves - connect(job, &KIO::Job::result, []() { - KNotification::event(QStringLiteral("Trash: emptied"), i18n("Trash Emptied"), - i18n("The Trash was emptied."), QStringLiteral("user-trash"), - nullptr, KNotification::DefaultEvent); - }); - return job; + QObject::connect(emptyJob, &KIO::Job::result, notifyEmptied); } - return nullptr; +#endif } bool Trash::isEmpty() diff --git a/src/trash/dolphintrash.h b/src/trash/dolphintrash.h index 2ee85e89a..c65cf9232 100644 --- a/src/trash/dolphintrash.h +++ b/src/trash/dolphintrash.h @@ -25,7 +25,7 @@ public: Trash& operator=(Trash &&) = delete; static Trash& instance(); - static KIO::Job* empty(QWidget *window); + static void empty(QWidget *window); static bool isEmpty(); Q_SIGNALS: |
