]> cloud.milkyroute.net Git - dolphin.git/commitdiff
DolphinTrash: port away from deprecated KIO API
authorAhmad Samir <a.samirh78@gmail.com>
Wed, 7 Sep 2022 19:55:45 +0000 (21:55 +0200)
committerAhmad Samir <a.samirh78@gmail.com>
Sun, 16 Oct 2022 11:13:22 +0000 (13:13 +0200)
Also change empty() method to return void, nothing was using the KJob * it was returning.

src/trash/dolphintrash.cpp
src/trash/dolphintrash.h

index 1446ab38812754fa6abe2f15e23c6d85a43b907a..236f9817d3df001b134d67bc86495303688e3b71 100644 (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()
index 2ee85e89a87a8bdef0a362e6604b98a6bcad27f6..c65cf92329375d2bdc9b00a6e5f85e8ce49910e7 100644 (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: