┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/versioncontrol
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/versioncontrol')
-rw-r--r--src/views/versioncontrol/updateitemstatesthread.cpp16
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.cpp55
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.h7
3 files changed, 53 insertions, 25 deletions
diff --git a/src/views/versioncontrol/updateitemstatesthread.cpp b/src/views/versioncontrol/updateitemstatesthread.cpp
index 1fa3a6255..f9746aadd 100644
--- a/src/views/versioncontrol/updateitemstatesthread.cpp
+++ b/src/views/versioncontrol/updateitemstatesthread.cpp
@@ -19,6 +19,8 @@
#include "updateitemstatesthread.h"
+#include <kversioncontrolplugin2.h>
+
#include <QMutexLocker>
UpdateItemStatesThread::UpdateItemStatesThread() :
@@ -64,9 +66,19 @@ void UpdateItemStatesThread::run()
if (m_plugin->beginRetrieval(directory)) {
itemLocker.relock();
const int count = m_itemStates.count();
- for (int i = 0; i < count; ++i) {
- m_itemStates[i].version = m_plugin->versionState(m_itemStates[i].item);
+
+ KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
+ if (pluginV2) {
+ for (int i = 0; i < count; ++i) {
+ m_itemStates[i].version = pluginV2->itemVersion(m_itemStates[i].item);
+ }
+ } else {
+ for (int i = 0; i < count; ++i) {
+ const KVersionControlPlugin::VersionState state = m_plugin->versionState(m_itemStates[i].item);
+ m_itemStates[i].version = static_cast<KVersionControlPlugin2::ItemVersion>(state);
+ }
}
+
m_plugin->endRetrieval();
m_retrievedItems = true;
}
diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp
index c8d9d6874..20b059035 100644
--- a/src/views/versioncontrol/versioncontrolobserver.cpp
+++ b/src/views/versioncontrol/versioncontrolobserver.cpp
@@ -26,7 +26,7 @@
#include <KService>
#include <KServiceTypeTrader>
#include <kitemviews/kfileitemmodel.h>
-#include <kversioncontrolplugin.h>
+#include <kversioncontrolplugin2.h>
#include "updateitemstatesthread.h"
@@ -87,30 +87,41 @@ KFileItemModel* VersionControlObserver::model() const
return m_model;
}
-QList<QAction*> VersionControlObserver::contextMenuActions(const KFileItemList& items) const
+QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) const
{
QList<QAction*> actions;
- if (isVersioned()) {
+ if (!m_model) {
+ return actions;
+ }
+
+ KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
+ if (pluginV2) {
+ // Use version 2 of the KVersionControlPlugin which allows providing actions
+ // also for non-versioned directories.
if (m_updateItemStatesThread && m_updateItemStatesThread->lockPlugin()) {
- actions = m_plugin->contextMenuActions(items);
+ actions = pluginV2->actions(items);
m_updateItemStatesThread->unlockPlugin();
} else {
- actions = m_plugin->contextMenuActions(items);
+ actions = pluginV2->actions(items);
+ }
+ } else if (isVersioned()) {
+ // Support deprecated interfaces from KVersionControlPlugin version 1.
+ // Context menu actions where only available for versioned directories.
+ QString directory;
+ if (items.count() == 1) {
+ const KFileItem rootItem = m_model->rootItem();
+ if (!rootItem.isNull() && items.first().url() == rootItem.url()) {
+ directory = rootItem.url().path(KUrl::AddTrailingSlash);
+ }
}
- }
-
- return actions;
-}
-QList<QAction*> VersionControlObserver::contextMenuActions(const QString& directory) const
-{
- QList<QAction*> actions;
- if (isVersioned()) {
if (m_updateItemStatesThread && m_updateItemStatesThread->lockPlugin()) {
- actions = m_plugin->contextMenuActions(directory);
+ actions = directory.isEmpty() ? m_plugin->contextMenuActions(items)
+ : m_plugin->contextMenuActions(directory);
m_updateItemStatesThread->unlockPlugin();
} else {
- actions = m_plugin->contextMenuActions(directory);
+ actions = directory.isEmpty() ? m_plugin->contextMenuActions(items)
+ : m_plugin->contextMenuActions(directory);
}
}
@@ -135,7 +146,7 @@ void VersionControlObserver::verifyDirectory()
return;
}
- const KUrl versionControlUrl = m_model->rootDirectory();
+ const KUrl versionControlUrl = m_model->rootItem().url();
if (!versionControlUrl.isLocalFile()) {
return;
}
@@ -146,8 +157,14 @@ void VersionControlObserver::verifyDirectory()
m_plugin = searchPlugin(versionControlUrl);
if (m_plugin) {
- connect(m_plugin, SIGNAL(versionStatesChanged()),
- this, SLOT(silentDirectoryVerification()));
+ KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
+ if (pluginV2) {
+ connect(pluginV2, SIGNAL(itemVersionsChanged()),
+ this, SLOT(silentDirectoryVerification()));
+ } else {
+ connect(m_plugin, SIGNAL(versionStatesChanged()),
+ this, SLOT(silentDirectoryVerification()));
+ }
connect(m_plugin, SIGNAL(infoMessage(QString)),
this, SIGNAL(infoMessage(QString)));
connect(m_plugin, SIGNAL(errorMessage(QString)),
@@ -233,7 +250,7 @@ void VersionControlObserver::updateItemStates()
ItemState itemState;
itemState.index = i;
itemState.item = m_model->fileItem(i);
- itemState.version = KVersionControlPlugin::UnversionedVersion;
+ itemState.version = KVersionControlPlugin2::UnversionedVersion;
itemStates.append(itemState);
}
diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h
index e160008d7..501af7d6f 100644
--- a/src/views/versioncontrol/versioncontrolobserver.h
+++ b/src/views/versioncontrol/versioncontrolobserver.h
@@ -23,7 +23,7 @@
#include <libdolphin_export.h>
#include <KFileItem>
-#include <kversioncontrolplugin.h>
+#include <kversioncontrolplugin2.h>
#include <QList>
#include <QMutex>
#include <QObject>
@@ -54,8 +54,7 @@ public:
void setModel(KFileItemModel* model);
KFileItemModel* model() const;
- QList<QAction*> contextMenuActions(const KFileItemList& items) const;
- QList<QAction*> contextMenuActions(const QString& directory) const;
+ QList<QAction*> actions(const KFileItemList& items) const;
signals:
/**
@@ -105,7 +104,7 @@ private:
{
int index;
KFileItem item;
- KVersionControlPlugin::VersionState version;
+ KVersionControlPlugin2::ItemVersion version;
};
void updateItemStates();