X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/67ccf75ef2e2af463ee5e5ea5e370aa3a970ee32..9a9fbae988147c5651ce9e2bd2b412d32c1bf01d:/src/views/versioncontrol/versioncontrolobserver.cpp diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index 4b0d65029..d2e1ecd13 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -20,16 +20,14 @@ #include "versioncontrolobserver.h" #include "dolphin_versioncontrolsettings.h" +#include "dolphindebug.h" +#include "kitemviews/kfileitemmodel.h" +#include "updateitemstatesthread.h" #include #include -#include "dolphindebug.h" #include -#include - -#include "updateitemstatesthread.h" -#include #include VersionControlObserver::VersionControlObserver(QObject* parent) : @@ -37,10 +35,11 @@ VersionControlObserver::VersionControlObserver(QObject* parent) : m_pendingItemStatesUpdate(false), m_versionedDirectory(false), m_silentUpdate(false), - m_model(0), - m_dirVerificationTimer(0), - m_plugin(0), - m_updateItemStatesThread(0) + m_model(nullptr), + m_dirVerificationTimer(nullptr), + m_pluginsInitialized(false), + m_plugin(nullptr), + m_updateItemStatesThread(nullptr) { // The verification timer specifies the timeout until the shown directory // is checked whether it is versioned. Per default it is assumed that users @@ -58,7 +57,7 @@ VersionControlObserver::~VersionControlObserver() { if (m_plugin) { m_plugin->disconnect(this); - m_plugin = 0; + m_plugin = nullptr; } } @@ -163,7 +162,7 @@ void VersionControlObserver::verifyDirectory() void VersionControlObserver::slotThreadFinished() { UpdateItemStatesThread* thread = m_updateItemStatesThread; - m_updateItemStatesThread = 0; // The thread deletes itself automatically (see updateItemStates()) + m_updateItemStatesThread = nullptr; // The thread deletes itself automatically (see updateItemStates()) if (!m_plugin || !thread) { return; @@ -258,45 +257,39 @@ int VersionControlObserver::createItemStatesList(QMap plugins; - - if (!pluginsAvailable) { - // A searching for plugins has already been done, but no - // plugins are installed - return 0; - } - - if (plugins.isEmpty()) { + if (!m_pluginsInitialized) { // No searching for plugins has been done yet. Query the KServiceTypeTrader for // all fileview version control plugins and remember them in 'plugins'. const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); - const KService::List pluginServices = KServiceTypeTrader::self()->query("FileViewVersionControlPlugin"); + const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin")); for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { if (enabledPlugins.contains((*it)->name())) { - KVersionControlPlugin* plugin = (*it)->createInstance(); + KVersionControlPlugin* plugin = (*it)->createInstance(this); if (plugin) { - plugins.append(plugin); + m_plugins.append(plugin); } } } - if (plugins.isEmpty()) { - pluginsAvailable = false; - return 0; - } + m_pluginsInitialized = true; + } + + if (m_plugins.empty()) { + // A searching for plugins has already been done, but no + // plugins are installed + return nullptr; } // We use the number of upUrl() calls to find the best matching plugin // for the given directory. The smaller value, the better it is (0 is best). - KVersionControlPlugin* bestPlugin = 0; + KVersionControlPlugin* bestPlugin = nullptr; int bestScore = INT_MAX; // Verify whether the current directory contains revision information // like .svn, .git, ... - foreach (KVersionControlPlugin* plugin, plugins) { + foreach (KVersionControlPlugin* plugin, m_plugins) { const QString fileName = directory.path() + '/' + plugin->fileName(); if (QFile::exists(fileName)) { // The score of this plugin is 0 (best), so we can just return this plugin,