]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use KDirLister directly now that it emits a jobError() signal
authorAhmad Samir <a.samirh78@gmail.com>
Thu, 15 Jul 2021 22:29:07 +0000 (00:29 +0200)
committerAhmad Samir <a.samirh78@gmail.com>
Mon, 19 Jul 2021 09:57:58 +0000 (09:57 +0000)
Since KIO 5.82, KCoreDirLister (the base class of KDirLister) emits a jobError()
signal when the ListJob used internally emits an error.

Drop KFileItemModelDirLister class, now redundant.

This also bump the KF version to 5.82.

CMakeLists.txt
src/CMakeLists.txt
src/dolphinpart.cpp
src/kitemviews/kfileitemmodel.cpp
src/kitemviews/kfileitemmodel.h
src/kitemviews/private/kfileitemmodeldirlister.cpp [deleted file]
src/kitemviews/private/kfileitemmodeldirlister.h [deleted file]
src/tests/kfileitemlistviewtest.cpp
src/tests/kfileitemmodeltest.cpp

index c8957cd6d68e3dcabe9c465bb3a2a523cd3c8054..7d50205bc583063433e5df55ec1da87e0740e2b9 100644 (file)
@@ -8,7 +8,7 @@ set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE
 project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
 
 set(QT_MIN_VERSION "5.15.0")
-set(KF5_MIN_VERSION "5.81.0")
+set(KF5_MIN_VERSION "5.82.0")
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
index 46dbaa152f086983eefc3d1075cf820eb869530b..147f18c003696f1f056da7f9a706ffb8434d6b96 100644 (file)
@@ -82,7 +82,6 @@ target_sources(dolphinprivate PRIVATE
     kitemviews/private/kdirectorycontentscounter.cpp
     kitemviews/private/kdirectorycontentscounterworker.cpp
     kitemviews/private/kfileitemclipboard.cpp
-    kitemviews/private/kfileitemmodeldirlister.cpp
     kitemviews/private/kfileitemmodelfilter.cpp
     kitemviews/private/kitemlistheaderwidget.cpp
     kitemviews/private/kitemlistkeyboardsearchmanager.cpp
index e2e5393da35b6e8387163c80efe18672f863bbb6..9c551d67abf797cbc6883cb31fb860773c9b9a07 100644 (file)
@@ -11,7 +11,6 @@
 #include "dolphinpart_ext.h"
 #include "dolphinremoveaction.h"
 #include "kitemviews/kfileitemmodel.h"
-#include "kitemviews/private/kfileitemmodeldirlister.h"
 #include "views/dolphinnewfilemenuobserver.h"
 #include "views/dolphinremoteencoding.h"
 #include "views/dolphinview.h"
@@ -22,6 +21,7 @@
 #include <KAuthorized>
 #include <KConfigGroup>
 #include <KDialogJobUiDelegate>
+#include <KDirLister>
 #include <KFileItemListProperties>
 #include <KIconLoader>
 #include <KJobWidgets>
index e03ec7c0e9f2533a9d5e96a96fadbbb3955e9313..b3080d93387c33c246cef02a5e3539f494fc2ea8 100644 (file)
 #include "dolphin_generalsettings.h"
 #include "dolphin_detailsmodesettings.h"
 #include "dolphindebug.h"
-#include "private/kfileitemmodeldirlister.h"
 #include "private/kfileitemmodelsortalgorithm.h"
 
-#include <kio_version.h>
+#include <KDirLister>
+#include <KIO/Job>
 #include <KLocalizedString>
 #include <KUrlMimeData>
 
@@ -53,7 +53,8 @@ KFileItemModel::KFileItemModel(QObject* parent) :
 
     loadSortingSettings();
 
-    m_dirLister = new KFileItemModelDirLister(this);
+    m_dirLister = new KDirLister(this);
+    m_dirLister->setAutoErrorHandlingEnabled(false);
     m_dirLister->setDelayedMimeTypes(true);
 
     const QWidget* parentWidget = qobject_cast<QWidget*>(parent);
@@ -61,23 +62,17 @@ KFileItemModel::KFileItemModel(QObject* parent) :
         m_dirLister->setMainWindow(parentWidget->window());
     }
 
-    connect(m_dirLister, &KFileItemModelDirLister::started, this, &KFileItemModel::directoryLoadingStarted);
+    connect(m_dirLister, &KCoreDirLister::started, this, &KFileItemModel::directoryLoadingStarted);
     connect(m_dirLister, QOverload<>::of(&KCoreDirLister::canceled), this, &KFileItemModel::slotCanceled);
-    connect(m_dirLister, &KFileItemModelDirLister::itemsAdded, this, &KFileItemModel::slotItemsAdded);
-    connect(m_dirLister, &KFileItemModelDirLister::itemsDeleted, this, &KFileItemModel::slotItemsDeleted);
-    connect(m_dirLister, &KFileItemModelDirLister::refreshItems, this, &KFileItemModel::slotRefreshItems);
+    connect(m_dirLister, &KCoreDirLister::itemsAdded, this, &KFileItemModel::slotItemsAdded);
+    connect(m_dirLister, &KCoreDirLister::itemsDeleted, this, &KFileItemModel::slotItemsDeleted);
+    connect(m_dirLister, &KCoreDirLister::refreshItems, this, &KFileItemModel::slotRefreshItems);
     connect(m_dirLister, QOverload<>::of(&KCoreDirLister::clear), this, &KFileItemModel::slotClear);
-    connect(m_dirLister, &KFileItemModelDirLister::infoMessage, this, &KFileItemModel::infoMessage);
-    connect(m_dirLister, &KFileItemModelDirLister::errorMessage, this, &KFileItemModel::errorMessage);
-    connect(m_dirLister, &KFileItemModelDirLister::percent, this, &KFileItemModel::directoryLoadingProgress);
+    connect(m_dirLister, &KCoreDirLister::infoMessage, this, &KFileItemModel::infoMessage);
+    connect(m_dirLister, &KCoreDirLister::jobError, this, &KFileItemModel::slotListerError);
+    connect(m_dirLister, &KCoreDirLister::percent, this, &KFileItemModel::directoryLoadingProgress);
     connect(m_dirLister, QOverload<const QUrl&, const QUrl&>::of(&KCoreDirLister::redirection), this, &KFileItemModel::directoryRedirection);
-    connect(m_dirLister, &KFileItemModelDirLister::urlIsFileError, this, &KFileItemModel::urlIsFileError);
-
-#if KIO_VERSION < QT_VERSION_CHECK(5, 79, 0)
-    connect(m_dirLister, QOverload<const QUrl&>::of(&KCoreDirLister::completed), this, &KFileItemModel::slotCompleted);
-#else
     connect(m_dirLister, &KCoreDirLister::listingDirCompleted, this, &KFileItemModel::slotCompleted);
-#endif
 
     // Apply default roles that should be determined
     resetRoles();
@@ -2501,3 +2496,15 @@ bool KFileItemModel::isConsistent() const
 
     return true;
 }
+
+void KFileItemModel::slotListerError(KIO::Job *job)
+{
+    if (job->error() == KIO::ERR_IS_FILE) {
+        if (auto *listJob = qobject_cast<KIO::ListJob *>(job)) {
+            Q_EMIT urlIsFileError(listJob->url());
+        }
+    } else {
+        const QString errorString = job->errorString();
+        Q_EMIT errorMessage(!errorString.isEmpty() ? errorString : i18nc("@info:status", "Unknown error."));
+    }
+}
index acf4b761cf51bde3b470c197ce5ad36e81721962..3602c16c12227f6a250561d60d67ca29e0d64744 100644 (file)
 
 #include <functional>
 
-class KFileItemModelDirLister;
+class KDirLister;
+
 class QTimer;
 
+namespace KIO {
+    class Job;
+}
+
 /**
  * @brief KItemModelBase implementation for KFileItems.
  *
@@ -270,6 +275,7 @@ private Q_SLOTS:
     void slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& items);
     void slotClear();
     void slotSortingChoiceChanged();
+    void slotListerError(KIO::Job *job);
 
     void dispatchPendingItemsToInsert();
 
@@ -458,7 +464,7 @@ private:
     bool isConsistent() const;
 
 private:
-    KFileItemModelDirLister* m_dirLister;
+    KDirLister *m_dirLister = nullptr;
 
     QCollator m_collator;
     bool m_naturalSorting;
diff --git a/src/kitemviews/private/kfileitemmodeldirlister.cpp b/src/kitemviews/private/kfileitemmodeldirlister.cpp
deleted file mode 100644 (file)
index eb860a2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2006-2012 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "kfileitemmodeldirlister.h"
-
-#include <KLocalizedString>
-#include <KIO/Job>
-#include <kio_version.h>
-
-KFileItemModelDirLister::KFileItemModelDirLister(QObject* parent) :
-    KDirLister(parent)
-{
-#if KIO_VERSION < QT_VERSION_CHECK(5, 82, 0)
-    setAutoErrorHandlingEnabled(false, nullptr);
-#else
-    setAutoErrorHandlingEnabled(false);
-#endif
-}
-
-KFileItemModelDirLister::~KFileItemModelDirLister()
-{
-}
-
-void KFileItemModelDirLister::handleError(KIO::Job* job)
-{
-    if (job->error() == KIO::ERR_IS_FILE) {
-        Q_EMIT urlIsFileError(url());
-    } else {
-        const QString errorString = job->errorString();
-        if (errorString.isEmpty()) {
-            Q_EMIT errorMessage(i18nc("@info:status", "Unknown error."));
-        } else {
-            Q_EMIT errorMessage(errorString);
-        }
-    }
-}
-
diff --git a/src/kitemviews/private/kfileitemmodeldirlister.h b/src/kitemviews/private/kfileitemmodeldirlister.h
deleted file mode 100644 (file)
index 5636959..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2006-2012 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef KFILEITEMMODELDIRLISTER_H
-#define KFILEITEMMODELDIRLISTER_H
-
-#include "dolphin_export.h"
-
-#include <KDirLister>
-
-#include <QUrl>
-
-/**
- * @brief Extends the class KDirLister by emitting a signal when an
- *        error occurred instead of showing an error dialog.
- *        KDirLister::autoErrorHandlingEnabled() is set to false.
- */
-class DOLPHIN_EXPORT KFileItemModelDirLister : public KDirLister
-{
-    Q_OBJECT
-
-public:
-    explicit KFileItemModelDirLister(QObject* parent = nullptr);
-    ~KFileItemModelDirLister() override;
-
-Q_SIGNALS:
-    /** Is emitted whenever an error has occurred. */
-    void errorMessage(const QString& msg);
-
-    /**
-     * Is emitted when the URL of the directory lister represents a file.
-     * In this case no signal errorMessage() will be emitted.
-     */
-    void urlIsFileError(const QUrl& url);
-
-protected:
-    void handleError(KIO::Job* job) override;
-};
-
-#endif
index 4a5cd063021dffc612ef49d0382e9d0448fe3341..22d5d3a01ae143e691bf13e9aedfa6303dfa6129 100644 (file)
@@ -6,9 +6,10 @@
 
 #include "kitemviews/kfileitemlistview.h"
 #include "kitemviews/kfileitemmodel.h"
-#include "kitemviews/private/kfileitemmodeldirlister.h"
 #include "testdir.h"
 
+#include <KDirLister>
+
 #include <QGraphicsView>
 #include <QTest>
 #include <QSignalSpy>
index f527fbc61b2043bd7d45bed1e44bbe7add949652..8dccc2c6f2f212c3e4515c987c5c48f00902c2ae 100644 (file)
 #include <QTimer>
 #include <QMimeData>
 
+#include <KDirLister>
 #include <kio/job.h>
 
 #include "kitemviews/kfileitemmodel.h"
-#include "kitemviews/private/kfileitemmodeldirlister.h"
 #include "testdir.h"
 
 void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)