]> cloud.milkyroute.net Git - dolphin.git/commitdiff
For VCS-plugin interface added pure virtual function outOfVersionControlActions()
authorNikolai Krasheninnikov <nkrasheninnikov@yandex.ru>
Mon, 27 Apr 2020 05:52:38 +0000 (08:52 +0300)
committerNikolai Krasheninnikov <nkrasheninnikov@yandex.ru>
Thu, 30 Apr 2020 13:56:24 +0000 (16:56 +0300)
Summary: This commit changes VCS-plugin interface in order to provide actions for unversioned items (for example clone or checkout repository), updates to dolphin-plugins comes in the separate commit D29042.

Reviewers: #dolphin, meven, elvisangelaccio

Reviewed By: #dolphin, meven, elvisangelaccio

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D29041

src/views/versioncontrol/kversioncontrolplugin.h
src/views/versioncontrol/versioncontrolobserver.cpp
src/views/versioncontrol/versioncontrolobserver.h

index 2879745349653126579ae2ebcff96222d221facd..0d94a3fc88fb0823738380420d68f726c27648b6 100644 (file)
@@ -180,14 +180,17 @@ public:
     virtual ItemVersion itemVersion(const KFileItem& item) const = 0;
 
     /**
-     * @return List of actions that are available for the items \p items.
-     *         It is recommended to keep the number of returned actions small
-     *         in case if an item is an unversioned directory that is not
-     *         inside the hierarchy tree of the version control system. This
-     *         prevents having a cluttered context menu for directories
-     *         outside the version control system.
+     * @return List of actions that are available for the \p items in a version controlled
+     *         path.
      */
-    virtual QList<QAction*> actions(const KFileItemList& items) const = 0;
+    virtual QList<QAction*> versionControlActions(const KFileItemList& items) const = 0;
+
+    /**
+     * @return List of actions that are available for the out of version control
+     *         items \p items. It's opposed to the \p versionedActions. Common usage
+     *         is for clone/checkout actions.
+     */
+    virtual QList<QAction*> outOfVersionControlActions(const KFileItemList& items) const = 0;
 
 Q_SIGNALS:
     /**
index 2d801686e259099a249a301b613f49109d41ca03..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()
@@ -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;
 }
index 66f992963c3532d5080f00844d01ea01d7a25798..648c9d6fdfd126b9fce238f8cd8302f9ae3a9483 100644 (file)
@@ -143,7 +143,7 @@ private:
     /**
      * Returns true, if the directory contains a version control information.
      */
-    bool isVersioned() const;
+    bool isVersionControlled() const;
 
 private:
     bool m_pendingItemStatesUpdate;