From: Peter Penz Date: Wed, 22 Jul 2009 19:26:25 +0000 (+0000) Subject: show the actions of a revision control plugin in the context menu X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/a9ef4bd96a6aa7f4b730bc0b4ff676c56e382507?ds=inline show the actions of a revision control plugin in the context menu svn path=/trunk/KDE/kdebase/apps/; revision=1001270 --- 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 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 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; @@ -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 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 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 RevisionControlObserver::contextMenuActions(const KFileItemList& items) const +{ + if (m_dolphinModel->hasRevisionData() && (m_plugin != 0)) { + return m_plugin->contextMenuActions(items); + } + + return QList(); +} + 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 #include +#include #include #include #include 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 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 +#include +#include #include #include #include @@ -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 SubversionPlugin::contextMenuActions(const KFileItemList& items) { Q_UNUSED(items); // TODO... - return QList(); + QList 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 m_revisionInfoHash; + + QAction* m_updateAction; + QAction* m_commitAction; + QAction* m_addAction; + QAction* m_removeAction; }; #endif // REVISIONCONTROLPLUGIN_H