┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-07-22 19:26:25 +0000
committerPeter Penz <[email protected]>2009-07-22 19:26:25 +0000
commita9ef4bd96a6aa7f4b730bc0b4ff676c56e382507 (patch)
treeab6757d346e5a8171a43f7c095fea51a80d1dffb /src
parentebf78d6ac26467560e66beeb106d0650aafd60f3 (diff)
show the actions of a revision control plugin in the context menu
svn path=/trunk/KDE/kdebase/apps/; revision=1001270
Diffstat (limited to 'src')
-rw-r--r--src/dolphincontextmenu.cpp10
-rw-r--r--src/dolphinview.cpp8
-rw-r--r--src/dolphinview.h9
-rw-r--r--src/revisioncontrolobserver.cpp9
-rw-r--r--src/revisioncontrolobserver.h5
-rw-r--r--src/revisioncontrolplugin.cpp30
-rw-r--r--src/revisioncontrolplugin.h5
7 files changed, 73 insertions, 3 deletions
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index 251da2c00..69b551493 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -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);
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index c454d65a5..a979ecdd2 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -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);
diff --git a/src/dolphinview.h b/src/dolphinview.h
index 44915f6c0..ea92ae853 100644
--- a/src/dolphinview.h
+++ b/src/dolphinview.h
@@ -55,6 +55,7 @@ class KActionCollection;
class KDirLister;
class KUrl;
class KToggleAction;
+class RevisionControlObserver;
class ToolTipManager;
class QModelIndex;
class ViewProperties;
@@ -325,6 +326,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.
*/
void updateAdditionalInfoActions(KActionCollection* 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
diff --git a/src/revisioncontrolobserver.cpp b/src/revisioncontrolobserver.cpp
index 7f832cef4..d6c2cb675 100644
--- a/src/revisioncontrolobserver.cpp
+++ b/src/revisioncontrolobserver.cpp
@@ -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();
diff --git a/src/revisioncontrolobserver.h b/src/revisioncontrolobserver.h
index 7e849c273..2fc21ed59 100644
--- a/src/revisioncontrolobserver.h
+++ b/src/revisioncontrolobserver.h
@@ -24,13 +24,16 @@
#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();
diff --git a/src/revisioncontrolplugin.cpp b/src/revisioncontrolplugin.cpp
index d5f2e4e5d..295dbe1c0 100644
--- a/src/revisioncontrolplugin.cpp
+++ b/src/revisioncontrolplugin.cpp
@@ -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
diff --git a/src/revisioncontrolplugin.h b/src/revisioncontrolplugin.h
index 95751253a..055464b69 100644
--- a/src/revisioncontrolplugin.h
+++ b/src/revisioncontrolplugin.h
@@ -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