X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/de8ea90ca78ccfb26dd501dc3bc089fb24ad9094..9bcac452caa1941ec667b47b00f8c8da019eb5e1:/src/views/versioncontrol/versioncontrolobserver.cpp diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index cf5be3c91..e0505675a 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -13,8 +13,8 @@ #include "updateitemstatesthread.h" #include -#include -#include +#include +#include #include @@ -135,7 +135,7 @@ void VersionControlObserver::slotItemsChanged(const KItemRangeList& itemRanges, { Q_UNUSED(itemRanges) - // Because "version" role is emitted by VCS plugin (ourselfs) we don't need to + // Because "version" role is emitted by VCS plugin (ourselves) we don't need to // analyze it and update directory item states information. So lets check if // there is only "version". if ( !(roles.count() == 1 && roles.contains("version")) ) { @@ -163,7 +163,7 @@ void VersionControlObserver::verifyDirectory() // by an immediate verification. m_dirVerificationTimer->setInterval(500); } else { - // View was versionned but should not be anymore + // View was versioned but should not be anymore updateItemStates(); } } else if ((m_plugin = searchPlugin(rootItem.url()))) { @@ -275,28 +275,35 @@ int VersionControlObserver::createItemStatesList(QMapquery(QStringLiteral("FileViewVersionControlPlugin")); - for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { - if (enabledPlugins.contains((*it)->name())) { - KVersionControlPlugin* plugin = (*it)->createInstance(this); - if (plugin) { - connect(plugin, &KVersionControlPlugin::itemVersionsChanged, - this, &VersionControlObserver::silentDirectoryVerification); - connect(plugin, &KVersionControlPlugin::infoMessage, - this, &VersionControlObserver::infoMessage); - connect(plugin, &KVersionControlPlugin::errorMessage, - this, &VersionControlObserver::errorMessage); - connect(plugin, &KVersionControlPlugin::operationCompletedMessage, - this, &VersionControlObserver::operationCompletedMessage); + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("dolphin/vcs")); + + QSet loadedPlugins; + for (const auto &p : plugins) { + if (enabledPlugins.contains(p.name())) { + auto plugin = KPluginFactory::instantiatePlugin(p, parent()).plugin; + if (plugin) { m_plugins.append(plugin); + loadedPlugins += p.name(); } } } + + for (auto &plugin : qAsConst(m_plugins)) { + connect(plugin, &KVersionControlPlugin::itemVersionsChanged, + this, &VersionControlObserver::silentDirectoryVerification); + connect(plugin, &KVersionControlPlugin::infoMessage, + this, &VersionControlObserver::infoMessage); + connect(plugin, &KVersionControlPlugin::errorMessage, + this, &VersionControlObserver::errorMessage); + connect(plugin, &KVersionControlPlugin::operationCompletedMessage, + this, &VersionControlObserver::operationCompletedMessage); + } + m_pluginsInitialized = true; } }