DolphinTrash: port away from deprecated KIO API

Also change empty() method to return void, nothing was using the KJob * it was returning.
This commit is contained in:
Ahmad Samir 2022-09-07 21:55:45 +02:00
parent 673c54ce35
commit a0c0b43b97
2 changed files with 29 additions and 13 deletions

View file

@ -7,15 +7,20 @@
#include "dolphintrash.h" #include "dolphintrash.h"
#include <KIO/JobUiDelegate>
#include <kio_version.h>
#include <KJobWidgets>
#include <QList> #include <QList>
#include <KNotification> #include <KNotification>
#include <KConfig> #include <KConfig>
#include <KConfigGroup> #include <KConfigGroup>
#include <KLocalizedString> #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() Trash::Trash()
: m_trashDirLister(new KDirLister()) : m_trashDirLister(new KDirLister())
{ {
@ -44,8 +49,25 @@ Trash &Trash::instance()
return result; 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; KIO::JobUiDelegate uiDelegate;
uiDelegate.setWindow(window); uiDelegate.setWindow(window);
bool confirmed = uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation); 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(); KIO::Job* job = KIO::emptyTrash();
KJobWidgets::setWindow(job, window); KJobWidgets::setWindow(job, window);
job->uiDelegate()->setAutoErrorHandlingEnabled(true); job->uiDelegate()->setAutoErrorHandlingEnabled(true);
// as long as KIO doesn't do this, do it ourselves QObject::connect(emptyJob, &KIO::Job::result, notifyEmptied);
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;
} }
return nullptr; #endif
} }
bool Trash::isEmpty() bool Trash::isEmpty()

View file

@ -25,7 +25,7 @@ public:
Trash& operator=(Trash &&) = delete; Trash& operator=(Trash &&) = delete;
static Trash& instance(); static Trash& instance();
static KIO::Job* empty(QWidget *window); static void empty(QWidget *window);
static bool isEmpty(); static bool isEmpty();
Q_SIGNALS: Q_SIGNALS: