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

View file

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