mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
Use the new KOverlayIconPlugin interface from KIO::Widgets
REVIEW: 125675
This commit is contained in:
parent
7b273bb4c6
commit
800d5114cb
|
@ -9,7 +9,7 @@ set (KDE_APPLICATIONS_VERSION_MICRO "1")
|
||||||
set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}")
|
set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}")
|
||||||
|
|
||||||
set(QT_MIN_VERSION "5.4.0")
|
set(QT_MIN_VERSION "5.4.0")
|
||||||
set(KF5_MIN_VERSION "5.7.0")
|
set(KF5_MIN_VERSION "5.16.0")
|
||||||
set(ECM_MIN_VERSION "1.6.0")
|
set(ECM_MIN_VERSION "1.6.0")
|
||||||
|
|
||||||
# ECM setup
|
# ECM setup
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include <KJobWidgets>
|
#include <KJobWidgets>
|
||||||
#include <KIO/JobUiDelegate>
|
#include <KIO/JobUiDelegate>
|
||||||
#include <KIO/PreviewJob>
|
#include <KIO/PreviewJob>
|
||||||
|
#include <KPluginLoader>
|
||||||
|
#include <KOverlayIconPlugin>
|
||||||
|
|
||||||
#include "private/kpixmapmodifier.h"
|
#include "private/kpixmapmodifier.h"
|
||||||
#include "private/kdirectorycontentscounter.h"
|
#include "private/kdirectorycontentscounter.h"
|
||||||
|
@ -47,6 +49,7 @@
|
||||||
#include <Baloo/FileMonitor>
|
#include <Baloo/FileMonitor>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// #define KFILEITEMMODELROLESUPDATER_DEBUG
|
// #define KFILEITEMMODELROLESUPDATER_DEBUG
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -129,6 +132,18 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO
|
||||||
m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this);
|
m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this);
|
||||||
connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result,
|
connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result,
|
||||||
this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived);
|
this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived);
|
||||||
|
|
||||||
|
auto plugins = KPluginLoader::instantiatePlugins(QStringLiteral("kf5/overlayicon"), nullptr, this);
|
||||||
|
foreach (QObject *it, plugins) {
|
||||||
|
auto plugin = qobject_cast<KOverlayIconPlugin*>(it);
|
||||||
|
if (plugin) {
|
||||||
|
m_overlayIconsPlugin.append(plugin);
|
||||||
|
connect(plugin, &KOverlayIconPlugin::overlaysChanged, this, &KFileItemModelRolesUpdater::slotOverlaysChanged);
|
||||||
|
} else {
|
||||||
|
// not our/valid plugin, so delete the created object
|
||||||
|
it->deleteLater();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KFileItemModelRolesUpdater::~KFileItemModelRolesUpdater()
|
KFileItemModelRolesUpdater::~KFileItemModelRolesUpdater()
|
||||||
|
@ -1065,7 +1080,11 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
|
||||||
data.insert("type", item.mimeComment());
|
data.insert("type", item.mimeComment());
|
||||||
}
|
}
|
||||||
|
|
||||||
data.insert("iconOverlays", item.overlays());
|
QStringList overlays = item.overlays();
|
||||||
|
foreach(KOverlayIconPlugin *it, m_overlayIconsPlugin) {
|
||||||
|
overlays.append(it->getOverlays(item.url()));
|
||||||
|
}
|
||||||
|
data.insert("iconOverlays", overlays);
|
||||||
|
|
||||||
#ifdef HAVE_BALOO
|
#ifdef HAVE_BALOO
|
||||||
if (m_balooFileMonitor) {
|
if (m_balooFileMonitor) {
|
||||||
|
@ -1076,6 +1095,22 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KFileItemModelRolesUpdater::slotOverlaysChanged(const QUrl& url, const QStringList &)
|
||||||
|
{
|
||||||
|
const KFileItem item = m_model->fileItem(url);
|
||||||
|
if (item.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const int index = m_model->index(item);
|
||||||
|
QHash<QByteArray, QVariant> data = m_model->data(index);
|
||||||
|
QStringList overlays = item.overlays();
|
||||||
|
foreach (KOverlayIconPlugin *it, m_overlayIconsPlugin) {
|
||||||
|
overlays.append(it->getOverlays(url));
|
||||||
|
}
|
||||||
|
data.insert("iconOverlays", overlays);
|
||||||
|
m_model->setData(index, data);
|
||||||
|
}
|
||||||
|
|
||||||
void KFileItemModelRolesUpdater::updateAllPreviews()
|
void KFileItemModelRolesUpdater::updateAllPreviews()
|
||||||
{
|
{
|
||||||
if (m_state == Paused) {
|
if (m_state == Paused) {
|
||||||
|
|
|
@ -36,6 +36,7 @@ class KDirectoryContentsCounter;
|
||||||
class KFileItemModel;
|
class KFileItemModel;
|
||||||
class QPixmap;
|
class QPixmap;
|
||||||
class QTimer;
|
class QTimer;
|
||||||
|
class KOverlayIconPlugin;
|
||||||
|
|
||||||
namespace KIO {
|
namespace KIO {
|
||||||
class PreviewJob;
|
class PreviewJob;
|
||||||
|
@ -183,6 +184,11 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void slotPreviewJobFinished();
|
void slotPreviewJobFinished();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is invoked when one of the KOverlayIconPlugin emit the signal that an overlay has changed
|
||||||
|
*/
|
||||||
|
void slotOverlaysChanged(const QUrl& url, const QStringList&);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolves the sort role of the next item in m_pendingSortRole, applies it
|
* Resolves the sort role of the next item in m_pendingSortRole, applies it
|
||||||
* to the model, and invokes itself if there are any pending items left. If
|
* to the model, and invokes itself if there are any pending items left. If
|
||||||
|
@ -334,6 +340,8 @@ private:
|
||||||
|
|
||||||
KDirectoryContentsCounter* m_directoryContentsCounter;
|
KDirectoryContentsCounter* m_directoryContentsCounter;
|
||||||
|
|
||||||
|
QList<KOverlayIconPlugin*> m_overlayIconsPlugin;
|
||||||
|
|
||||||
#ifdef HAVE_BALOO
|
#ifdef HAVE_BALOO
|
||||||
Baloo::FileMonitor* m_balooFileMonitor;
|
Baloo::FileMonitor* m_balooFileMonitor;
|
||||||
Baloo::IndexerConfig m_balooConfig;
|
Baloo::IndexerConfig m_balooConfig;
|
||||||
|
|
Loading…
Reference in a new issue