┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
diff options
context:
space:
mode:
Diffstat (limited to 'src/views')
-rw-r--r--src/views/dolphinfileitemlistwidget.cpp23
-rw-r--r--src/views/dolphinfileitemlistwidget.h4
-rw-r--r--src/views/dolphinview.cpp6
-rw-r--r--src/views/versioncontrol/updateitemstatesthread.cpp16
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.cpp55
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.h7
6 files changed, 71 insertions, 40 deletions
diff --git a/src/views/dolphinfileitemlistwidget.cpp b/src/views/dolphinfileitemlistwidget.cpp
index d39d58cd0..f3489e1b5 100644
--- a/src/views/dolphinfileitemlistwidget.cpp
+++ b/src/views/dolphinfileitemlistwidget.cpp
@@ -21,6 +21,7 @@
#include <KIcon>
#include <KIconLoader>
+#include <kversioncontrolplugin2.h>
#include <QColor>
#include <KDebug>
@@ -41,7 +42,7 @@ void DolphinFileItemListWidget::refreshCache()
if (values.contains("version")) {
// The item is under version control. Apply the text color corresponding
// to its version state.
- const KVersionControlPlugin::VersionState version = static_cast<KVersionControlPlugin::VersionState>(values.value("version").toInt());
+ const KVersionControlPlugin2::ItemVersion version = static_cast<KVersionControlPlugin2::ItemVersion>(values.value("version").toInt());
const QColor textColor = styleOption().palette.text().color();
QColor tintColor = textColor;
@@ -49,14 +50,16 @@ void DolphinFileItemListWidget::refreshCache()
// as tint colors and are mixed with the current set text color. The tint colors
// have been optimized for the base colors of the corresponding Oxygen emblems.
switch (version) {
- case KVersionControlPlugin::UpdateRequiredVersion: tintColor = Qt::yellow; break;
- case KVersionControlPlugin::LocallyModifiedUnstagedVersion: tintColor = Qt::green; break;
- case KVersionControlPlugin::LocallyModifiedVersion: tintColor = Qt::green; break;
- case KVersionControlPlugin::AddedVersion: tintColor = Qt::green; break;
- case KVersionControlPlugin::RemovedVersion: tintColor = Qt::darkRed; break;
- case KVersionControlPlugin::ConflictingVersion: tintColor = Qt::red; break;
- case KVersionControlPlugin::UnversionedVersion: tintColor = Qt::white; break;
- case KVersionControlPlugin::NormalVersion:
+ case KVersionControlPlugin2::UpdateRequiredVersion: tintColor = Qt::yellow; break;
+ case KVersionControlPlugin2::LocallyModifiedUnstagedVersion: tintColor = Qt::green; break;
+ case KVersionControlPlugin2::LocallyModifiedVersion: tintColor = Qt::green; break;
+ case KVersionControlPlugin2::AddedVersion: tintColor = Qt::green; break;
+ case KVersionControlPlugin2::RemovedVersion: tintColor = Qt::darkRed; break;
+ case KVersionControlPlugin2::ConflictingVersion: tintColor = Qt::red; break;
+ case KVersionControlPlugin2::UnversionedVersion: tintColor = Qt::white; break;
+ case KVersionControlPlugin2::IgnoredVersion: tintColor = Qt::white; break;
+ case KVersionControlPlugin2::MissingVersion: tintColor = Qt::red; break;
+ case KVersionControlPlugin2::NormalVersion:
default:
break;
}
@@ -74,7 +77,7 @@ void DolphinFileItemListWidget::refreshCache()
setTextColor(color);
}
-QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin::VersionState version, int size)
+QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin2::ItemVersion version, int size)
{
int overlayHeight = KIconLoader::SizeSmall;
if (size >= KIconLoader::SizeEnormous) {
diff --git a/src/views/dolphinfileitemlistwidget.h b/src/views/dolphinfileitemlistwidget.h
index 8435b5c18..87ed0333b 100644
--- a/src/views/dolphinfileitemlistwidget.h
+++ b/src/views/dolphinfileitemlistwidget.h
@@ -23,7 +23,7 @@
#include <libdolphin_export.h>
#include <kitemviews/kfileitemlistwidget.h>
-#include <kversioncontrolplugin.h>
+#include <kversioncontrolplugin2.h>
/**
* @brief Extends KFileItemListWidget to handle the "version" role.
@@ -43,7 +43,7 @@ protected:
virtual void refreshCache();
private:
- static QPixmap overlayForState(KVersionControlPlugin::VersionState state, int size);
+ static QPixmap overlayForState(KVersionControlPlugin2::ItemVersion version, int size);
};
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index a53934ddc..7cb594d8e 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -521,10 +521,10 @@ QList<QAction*> DolphinView::versionControlActions(const KFileItemList& items) c
QList<QAction*> actions;
if (items.isEmpty()) {
- const KUrl url = fileItemModel()->rootDirectory();
- actions = m_versionControlObserver->contextMenuActions(url.path(KUrl::AddTrailingSlash));
+ const KFileItem item = fileItemModel()->rootItem();
+ actions = m_versionControlObserver->actions(KFileItemList() << item);
} else {
- actions = m_versionControlObserver->contextMenuActions(items);
+ actions = m_versionControlObserver->actions(items);
}
return actions;
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();