From 47d50032839e70f847adc1cc0de784f001936954 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 23 Jul 2009 06:28:28 +0000 Subject: [PATCH] The revision control plugin must be aware on which directory the context-menu-actions should get applied. Relying on the directory that has been used in beginRetrieval() does not work when having a treeview. svn path=/trunk/KDE/kdebase/apps/; revision=1001388 --- src/dolphinview.cpp | 4 +++- src/revisioncontrolobserver.cpp | 8 ++++++++ src/revisioncontrolobserver.h | 1 + src/revisioncontrolplugin.cpp | 18 ++++++++++++++---- src/revisioncontrolplugin.h | 11 +++++++++-- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index a979ecdd22..a12e7a991a 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -611,7 +611,9 @@ QString DolphinView::statusBarText() const QList DolphinView::revisionControlActions(const KFileItemList& items) const { - return m_revisionControlObserver->contextMenuActions(items); + return items.isEmpty() + ? m_revisionControlObserver->contextMenuActions(url().path(KUrl::AddTrailingSlash)) + : m_revisionControlObserver->contextMenuActions(items); } void DolphinView::setUrl(const KUrl& url) diff --git a/src/revisioncontrolobserver.cpp b/src/revisioncontrolobserver.cpp index 5b3c38947a..f3bf08ce42 100644 --- a/src/revisioncontrolobserver.cpp +++ b/src/revisioncontrolobserver.cpp @@ -131,6 +131,14 @@ QList RevisionControlObserver::contextMenuActions(const KFileItemList& if (m_dolphinModel->hasRevisionData() && (m_plugin != 0)) { return m_plugin->contextMenuActions(items); } + return QList(); +} + +QList RevisionControlObserver::contextMenuActions(const QString& directory) const +{ + if (m_dolphinModel->hasRevisionData() && (m_plugin != 0)) { + return m_plugin->contextMenuActions(directory); + } return QList(); } diff --git a/src/revisioncontrolobserver.h b/src/revisioncontrolobserver.h index 2fc21ed59a..27c7a27a0e 100644 --- a/src/revisioncontrolobserver.h +++ b/src/revisioncontrolobserver.h @@ -55,6 +55,7 @@ public: virtual ~RevisionControlObserver(); QList contextMenuActions(const KFileItemList& items) const; + QList contextMenuActions(const QString& directory) const; private slots: void delayedDirectoryVerification(); diff --git a/src/revisioncontrolplugin.cpp b/src/revisioncontrolplugin.cpp index 6a833f6224..b3b407c619 100644 --- a/src/revisioncontrolplugin.cpp +++ b/src/revisioncontrolplugin.cpp @@ -133,13 +133,23 @@ RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const KFile QList SubversionPlugin::contextMenuActions(const KFileItemList& items) const { + Q_UNUSED(items); + + QList actions; + actions.append(m_updateAction); + actions.append(m_commitAction); + actions.append(m_addAction); + actions.append(m_removeAction); + return actions; +} + +QList SubversionPlugin::contextMenuActions(const QString& directory) const +{ + Q_UNUSED(directory); + QList actions; actions.append(m_updateAction); actions.append(m_commitAction); - if (!items.isEmpty()) { - actions.append(m_addAction); - actions.append(m_removeAction); - } return actions; } diff --git a/src/revisioncontrolplugin.h b/src/revisioncontrolplugin.h index 54bd10f032..bbe66b3c3b 100644 --- a/src/revisioncontrolplugin.h +++ b/src/revisioncontrolplugin.h @@ -93,13 +93,19 @@ public: /** * Returns the list of actions that should be shown in the context menu - * for the files \p items. If no files are provided by \p items, the context - * menu is valid for the current directory (see RevisionControlPlugin::beginRetrieval()). + * for the files \p items. It is assured that the passed list is not empty. * If an action triggers a change of the revisions, the signal * RevisionControlPlugin::revisionStatesChanged() must be emitted. */ virtual QList contextMenuActions(const KFileItemList& items) const = 0; + /** + * Returns the list of actions that should be shown in the context menu + * for the directory \p directory. If an action triggers a change of the revisions, + * the signal RevisionControlPlugin::revisionStatesChanged() must be emitted. + */ + virtual QList contextMenuActions(const QString& directory) const = 0; + signals: /** * Should be emitted when the revision state of files has been changed @@ -131,6 +137,7 @@ public: virtual void endRetrieval(); virtual RevisionControlPlugin::RevisionState revisionState(const KFileItem& item); virtual QList contextMenuActions(const KFileItemList& items) const; + virtual QList contextMenuActions(const QString& directory) const; private: /**