]> cloud.milkyroute.net Git - dolphin.git/commitdiff
show the actions of a revision control plugin in the context menu
authorPeter Penz <peter.penz19@gmail.com>
Wed, 22 Jul 2009 19:26:25 +0000 (19:26 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 22 Jul 2009 19:26:25 +0000 (19:26 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1001270

src/dolphincontextmenu.cpp
src/dolphinview.cpp
src/dolphinview.h
src/revisioncontrolobserver.cpp
src/revisioncontrolobserver.h
src/revisioncontrolplugin.cpp
src/revisioncontrolplugin.h

index 251da2c00c666a6033d08a9700005f40ea082097..69b551493c4077bce748fb4347892740579276a9 100644 (file)
@@ -223,6 +223,16 @@ void DolphinContextMenu::openItemContextMenu()
         popup->addSeparator();
     }
 
+    // insert revision control actions
+    DolphinView* view = m_mainWindow->activeViewContainer()->view();
+    const QList<QAction*> revControlActions = view->revisionControlActions(m_selectedItems);
+    if (revControlActions.count() > 0) {
+        foreach (QAction* action, revControlActions) {
+            popup->addAction(action);
+        }
+        popup->addSeparator();
+    }
+
     // insert 'Copy To' and 'Move To' sub menus
     if (DolphinSettings::instance().generalSettings()->showCopyMoveMenu()) {
         m_copyToMenu.setItems(m_selectedItems);
index c454d65a52f4c7d123eb9080b20a1cce876133ab..a979ecdd22554648fa285b8c93f8b23a1eec077b 100644 (file)
@@ -105,6 +105,7 @@ DolphinView::DolphinView(QWidget* parent,
     m_proxyModel(proxyModel),
     m_previewGenerator(0),
     m_toolTipManager(0),
+    m_revisionControlObserver(0),
     m_rootUrl(),
     m_activeItemUrl(),
     m_createdItemUrl(),
@@ -608,6 +609,11 @@ QString DolphinView::statusBarText() const
     return text;
 }
 
+QList<QAction*> DolphinView::revisionControlActions(const KFileItemList& items) const
+{
+    return m_revisionControlObserver->contextMenuActions(items);
+}
+
 void DolphinView::setUrl(const KUrl& url)
 {
     m_newFileNames.clear();
@@ -1461,7 +1467,7 @@ void DolphinView::createView()
     m_previewGenerator = new KFilePreviewGenerator(view);
     m_previewGenerator->setPreviewShown(m_showPreview);
 
-    new RevisionControlObserver(view);
+    m_revisionControlObserver = new RevisionControlObserver(view);
 
     if (DolphinSettings::instance().generalSettings()->showToolTips()) {
         m_toolTipManager = new ToolTipManager(view, m_proxyModel);
index 44915f6c01e094b8d74971125584687a1722316c..ea92ae85352e73b0f5efaea26d79bbc598cedff3 100644 (file)
@@ -55,6 +55,7 @@ class KActionCollection;
 class KDirLister;
 class KUrl;
 class KToggleAction;
+class RevisionControlObserver;
 class ToolTipManager;
 class QModelIndex;
 class ViewProperties;
@@ -324,6 +325,12 @@ public:
      */
     QString statusBarText() const;
 
+    /**
+     * Returns the revision control actions that are provided for the items \p items.
+     * Usually the actions are presented in the context menu.
+     */
+    QList<QAction*> revisionControlActions(const KFileItemList& items) const;
+
     /**
      * Updates the state of the 'Additional Information' actions in \a collection.
      */
@@ -809,6 +816,8 @@ private:
     KFilePreviewGenerator* m_previewGenerator;
     ToolTipManager* m_toolTipManager;
 
+    RevisionControlObserver* m_revisionControlObserver;
+
     KUrl m_rootUrl;
     KUrl m_activeItemUrl;
     KUrl m_createdItemUrl; // URL for a new item that got created by the "Create New..." menu
index 7f832cef402750dda3898cc3a594c8056c42602a..d6c2cb675d78ed7691001253186e428bb28661e4 100644 (file)
@@ -126,6 +126,15 @@ RevisionControlObserver::~RevisionControlObserver()
     m_plugin = 0;
 }
 
+QList<QAction*> RevisionControlObserver::contextMenuActions(const KFileItemList& items) const
+{
+    if (m_dolphinModel->hasRevisionData() && (m_plugin != 0)) {
+        return m_plugin->contextMenuActions(items);
+    }
+
+    return QList<QAction*>();
+}
+
 void RevisionControlObserver::delayedDirectoryVerification()
 {
     m_dirVerificationTimer->start();
index 7e849c27364006afee32c52fcc505abd94d5096f..2fc21ed59a6318ebd574f7340caf242b39c40a30 100644 (file)
 
 #include <kfileitem.h>
 #include <revisioncontrolplugin.h>
+#include <QList>
 #include <QObject>
 #include <QPersistentModelIndex>
 #include <QString>
 
 class DolphinModel;
 class KDirLister;
+class KFileItemList;
 class QAbstractItemView;
+class QAction;
 class QThread;
 class QTimer;
 class UpdateItemStatesThread;
@@ -51,6 +54,8 @@ public:
     RevisionControlObserver(QAbstractItemView* view);
     virtual ~RevisionControlObserver();
 
+    QList<QAction*> contextMenuActions(const KFileItemList& items) const;
+
 private slots:
     void delayedDirectoryVerification();
     void verifyDirectory();
index d5f2e4e5da1f03436b340654592ab1485a008d6e..295dbe1c0cb2cb3567a07eac22ab6e8fe9050adf 100644 (file)
@@ -19,6 +19,9 @@
 
 #include "revisioncontrolplugin.h"
 
+#include <kaction.h>
+#include <kicon.h>
+#include <klocale.h>
 #include <kfileitem.h>
 #include <QDir>
 #include <QString>
@@ -38,8 +41,26 @@ RevisionControlPlugin::~RevisionControlPlugin()
 
 SubversionPlugin::SubversionPlugin() :
     m_directory(),
-    m_revisionInfoHash()
+    m_revisionInfoHash(),
+    m_updateAction(0),
+    m_commitAction(0),
+    m_addAction(0),
+    m_removeAction(0)
 {
+    m_updateAction = new KAction(this);
+    m_updateAction->setIcon(KIcon("view-refresh"));
+    m_updateAction->setText(i18nc("@item:inmenu", "SVN Update"));
+
+    m_commitAction = new KAction(this);
+    m_commitAction->setText(i18nc("@item:inmenu", "SVN Commit..."));
+
+    m_addAction = new KAction(this);
+    m_addAction->setIcon(KIcon("list-add"));
+    m_addAction->setText(i18nc("@item:inmenu", "SVN Add"));
+
+    m_removeAction = new KAction(this);
+    m_removeAction->setIcon(KIcon("list-remove"));
+    m_removeAction->setText(i18nc("@item:inmenu", "SVN Delete"));
 }
 
 SubversionPlugin::~SubversionPlugin()
@@ -114,7 +135,12 @@ QList<QAction*> SubversionPlugin::contextMenuActions(const KFileItemList& items)
 {
     Q_UNUSED(items);
     // TODO...
-    return QList<QAction*>();
+    QList<QAction*> actions;
+    actions.append(m_updateAction);
+    actions.append(m_commitAction);
+    actions.append(m_addAction);
+    actions.append(m_removeAction);
+    return actions;
 }
 
 bool SubversionPlugin::equalRevisionContent(const QString& name) const
index 95751253aeb34063e95cd9fbe2667ef86e5b4f68..055464b69ba200e5b82de3f3ad5edb0483025d4b 100644 (file)
@@ -148,6 +148,11 @@ private:
 
     QString m_directory;
     QHash<QString, RevisionInfo> m_revisionInfoHash;
+
+    QAction* m_updateAction;
+    QAction* m_commitAction;
+    QAction* m_addAction;
+    QAction* m_removeAction;
 };
 #endif // REVISIONCONTROLPLUGIN_H