]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/trash/dolphintrash.cpp
Add explicit moc includes to sources for moc-covered headers
[dolphin.git] / src / trash / dolphintrash.cpp
index e4a2d947c1a7a2ffe7086e429d69e5d0c8596e74..b37a7430ddfc724c8851ef3338c1f80ff1255dd0 100644 (file)
@@ -1,32 +1,25 @@
-/***************************************************************************
- *   Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com>             *
- *   Copyright (C) 2018 by Roman Inflianskas <infroma@gmail.com>           *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
+ * SPDX-FileCopyrightText: 2018 Roman Inflianskas <infroma@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #include "dolphintrash.h"
 
-#include <KIO/JobUiDelegate>
-#include <KJobWidgets>
-#include <QList>
-#include <KNotification>
 #include <KConfig>
 #include <KConfigGroup>
 #include <KLocalizedString>
+#include <KNotification>
+#include <QList>
+
+#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())
@@ -34,13 +27,13 @@ Trash::Trash()
     // The trash icon must always be updated dependent on whether
     // the trash is empty or not. We use a KDirLister that automatically
     // watches for changes if the number of items has been changed.
-    m_trashDirLister->setAutoErrorHandlingEnabled(false, nullptr);
+    m_trashDirLister->setAutoErrorHandlingEnabled(false);
     m_trashDirLister->setDelayedMimeTypes(true);
     auto trashDirContentChanged = [this]() {
         bool isTrashEmpty = m_trashDirLister->items().isEmpty();
-        emit emptinessChanged(isTrashEmpty);
+        Q_EMIT emptinessChanged(isTrashEmpty);
     };
-    connect(m_trashDirLister, static_cast<void(KDirLister::*)()>(&KDirLister::completed), this, trashDirContentChanged);
+    connect(m_trashDirLister, &KCoreDirLister::completed, this, trashDirContentChanged);
     connect(m_trashDirLister, &KDirLister::itemsDeleted, this, trashDirContentChanged);
     m_trashDirLister->openUrl(QUrl(QStringLiteral("trash:/")));
 }
@@ -56,24 +49,35 @@ 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);
     if (confirmed) {
-        KIO::Jobjob = KIO::emptyTrash();
+        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(job, &KIO::Job::result, notifyEmptied);
     }
-    return nullptr;
+#endif
 }
 
 bool Trash::isEmpty()
@@ -82,3 +86,4 @@ bool Trash::isEmpty()
     return (trashConfig.group("Status").readEntry("Empty", true));
 }
 
+#include "moc_dolphintrash.cpp"