]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/versioncontrol/versioncontrolobserver.cpp
For VCS-plugin interface added pure virtual function outOfVersionControlActions()
[dolphin.git] / src / views / versioncontrol / versioncontrolobserver.cpp
index 65c13ef7d31760002ab63eaf93f9ea87793455a2..f6c74fb5fe4de9eee2e1b8560142b4cab93a1ecb 100644 (file)
@@ -118,11 +118,19 @@ QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) cons
         }
     }
 
-    if (!m_model || hasNullItems || !isVersioned()) {
+    if (!m_model || hasNullItems) {
         return {};
     }
 
-    return m_plugin->actions(items);
+    if (isVersionControlled()) {
+        return m_plugin->versionControlActions(items);
+    } else {
+        QList<QAction*> actions;
+        for (const auto &plugin : qAsConst(m_plugins)) {
+            actions << plugin.first->outOfVersionControlActions(items);
+        }
+        return actions;
+    }
 }
 
 void VersionControlObserver::delayedDirectoryVerification()
@@ -303,7 +311,7 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
             if (enabledPlugins.contains((*it)->name())) {
                 KVersionControlPlugin* plugin = (*it)->createInstance<KVersionControlPlugin>(this);
                 if (plugin) {
-                    m_plugins.append(plugin);
+                    m_plugins.append( qMakePair(plugin, plugin->fileName()) );
                 }
             }
         }
@@ -323,12 +331,12 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
 
     // Verify whether the current directory contains revision information
     // like .svn, .git, ...
-    foreach (KVersionControlPlugin* plugin, m_plugins) {
-        const QString fileName = directory.path() + '/' + plugin->fileName();
+    for (const auto &it : qAsConst(m_plugins)) {
+        const QString fileName = directory.path() + '/' + it.second;
         if (QFile::exists(fileName)) {
             // The score of this plugin is 0 (best), so we can just return this plugin,
             // instead of going through the plugin scoring procedure, we can't find a better one ;)
-            return plugin;
+            return it.first;
         }
 
         // Version control systems like Git provide the version information
@@ -342,10 +350,10 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
             QUrl upUrl = KIO::upUrl(dirUrl);
             int upUrlCounter = 1;
             while ((upUrlCounter < bestScore) && (upUrl != dirUrl)) {
-                const QString fileName = dirUrl.path() + '/' + plugin->fileName();
+                const QString fileName = dirUrl.path() + '/' + it.second;
                 if (QFile::exists(fileName)) {
                     if (upUrlCounter < bestScore) {
-                        bestPlugin = plugin;
+                        bestPlugin = it.first;
                         bestScore = upUrlCounter;
                     }
                     break;
@@ -360,7 +368,7 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
     return bestPlugin;
 }
 
-bool VersionControlObserver::isVersioned() const
+bool VersionControlObserver::isVersionControlled() const
 {
     return m_versionedDirectory && m_plugin;
 }