diff options
| author | Ahmad Samir <[email protected]> | 2021-07-16 00:29:07 +0200 |
|---|---|---|
| committer | Ahmad Samir <[email protected]> | 2021-07-19 09:57:58 +0000 |
| commit | 0b81b4baf9c7eebbdcf45745077d5a009635b9c8 (patch) | |
| tree | 9212698795bcb073aaca747af53c6634e632d6b3 /src/kitemviews | |
| parent | 7908aff3b5ebe4484d391c1fc4797e9dae2300b2 (diff) | |
Use KDirLister directly now that it emits a jobError() signal
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.
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 39 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodel.h | 10 | ||||
| -rw-r--r-- | src/kitemviews/private/kfileitemmodeldirlister.cpp | 40 | ||||
| -rw-r--r-- | src/kitemviews/private/kfileitemmodeldirlister.h | 43 |
4 files changed, 31 insertions, 101 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index e03ec7c0e..b3080d933 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -11,10 +11,10 @@ #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.")); + } +} diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index acf4b761c..3602c16c1 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -20,9 +20,14 @@ #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 index eb860a2b9..000000000 --- a/src/kitemviews/private/kfileitemmodeldirlister.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2006-2012 Peter Penz <[email protected]> - * - * 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 index 563695975..000000000 --- a/src/kitemviews/private/kfileitemmodeldirlister.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2006-2012 Peter Penz <[email protected]> - * - * 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 |
