X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/04e3c227cb8f9194aba315370cdc84995bd65341..40cc5f665d:/src/kitemviews/kfileitemmodelrolesupdater.cpp diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 3804a1907..ae185ff21 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -13,24 +13,24 @@ #include #include -#include #include #include #include #include -#include +#include #include -#ifdef HAVE_BALOO +#if HAVE_BALOO #include "private/kbaloorolesprovider.h" #include #include #endif #include -#include -#include #include +#include +#include +#include #include // #define KFILEITEMMODELROLESUPDATER_DEBUG @@ -81,7 +81,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO m_recentlyChangedItems(), m_changedItems(), m_directoryContentsCounter(nullptr) - #ifdef HAVE_BALOO + #if HAVE_BALOO , m_balooFileMonitor(nullptr) #endif { @@ -112,7 +112,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO m_resolvableRoles.insert("size"); m_resolvableRoles.insert("type"); m_resolvableRoles.insert("isExpandable"); -#ifdef HAVE_BALOO +#if HAVE_BALOO m_resolvableRoles += KBalooRolesProvider::instance().roles(); #endif @@ -120,15 +120,16 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result, this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived); - const auto plugins = KPluginLoader::instantiatePlugins(QStringLiteral("kf5/overlayicon"), nullptr, qApp); - for (QObject *it : plugins) { - auto plugin = qobject_cast(it); + const auto plugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/overlayicon")); + for (const KPluginMetaData &data : plugins) { + auto instance = QPluginLoader(data.fileName()).instance(); + auto plugin = qobject_cast(instance); 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(); + delete instance; } } } @@ -264,7 +265,7 @@ void KFileItemModelRolesUpdater::setRoles(const QSet& roles) if (m_roles != roles) { m_roles = roles; -#ifdef HAVE_BALOO +#if HAVE_BALOO // Check whether there is at least one role that must be resolved // with the help of Baloo. If this is the case, a (quite expensive) // resolving will be done in KFileItemModelRolesUpdater::rolesData() and @@ -394,7 +395,7 @@ void KFileItemModelRolesUpdater::slotItemsRemoved(const KItemRangeList& itemRang const bool allItemsRemoved = (m_model->count() == 0); -#ifdef HAVE_BALOO +#if HAVE_BALOO if (m_balooFileMonitor) { // Don't let the FileWatcher watch for removed items if (allItemsRemoved) { @@ -823,7 +824,7 @@ void KFileItemModelRolesUpdater::resolveRecentlyChangedItems() void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& file) { -#ifdef HAVE_BALOO +#if HAVE_BALOO const KFileItem item = m_model->fileItem(QUrl::fromLocalFile(file)); if (item.isNull()) { @@ -839,7 +840,7 @@ void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& file) void KFileItemModelRolesUpdater::applyChangedBalooRolesForItem(const KFileItem &item) { -#ifdef HAVE_BALOO +#if HAVE_BALOO Baloo::File file(item.localPath()); file.load(); @@ -1024,7 +1025,7 @@ void KFileItemModelRolesUpdater::startPreviewJob() KIO::PreviewJob* job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins); - job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && m_localFileSizePreviewLimit <= 0); + job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && !itemSubSet.first().isSlow() && m_localFileSizePreviewLimit <= 0); if (job->uiDelegate()) { KJobWidgets::setWindow(job, qApp->activeWindow()); } @@ -1133,7 +1134,7 @@ void KFileItemModelRolesUpdater::loadNextHoverSequencePreview() KIO::PreviewJob* job = new KIO::PreviewJob({m_hoverSequenceItem}, cacheSize, &m_enabledPlugins); job->setSequenceIndex(loadSeqIdx); - job->setIgnoreMaximumSize(m_hoverSequenceItem.isLocalFile() && m_localFileSizePreviewLimit <= 0); + job->setIgnoreMaximumSize(m_hoverSequenceItem.isLocalFile() && !m_hoverSequenceItem.isSlow() && m_localFileSizePreviewLimit <= 0); if (job->uiDelegate()) { KJobWidgets::setWindow(job, qApp->activeWindow()); } @@ -1335,6 +1336,10 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte } } + if (m_roles.contains("extension")) { + data.insert("extension", QFileInfo(item.name()).suffix()); + } + if (m_roles.contains("type")) { data.insert("type", item.mimeComment()); } @@ -1343,9 +1348,11 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte for (KOverlayIconPlugin *it : qAsConst(m_overlayIconsPlugin)) { overlays.append(it->getOverlays(item.url())); } - data.insert("iconOverlays", overlays); + if (!overlays.isEmpty()) { + data.insert("iconOverlays", overlays); + } -#ifdef HAVE_BALOO +#if HAVE_BALOO if (m_balooFileMonitor) { m_balooFileMonitor->addFile(item.localPath()); applyChangedBalooRolesForItem(item);