┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/dolphinfileitemlistwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/dolphinfileitemlistwidget.cpp')
-rw-r--r--src/views/dolphinfileitemlistwidget.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/views/dolphinfileitemlistwidget.cpp b/src/views/dolphinfileitemlistwidget.cpp
index dd391ac9a..c3ec2b8de 100644
--- a/src/views/dolphinfileitemlistwidget.cpp
+++ b/src/views/dolphinfileitemlistwidget.cpp
@@ -19,6 +19,11 @@
#include "dolphinfileitemlistwidget.h"
+#include <kversioncontrolplugin.h>
+#include <QColor>
+
+#include <KDebug>
+
DolphinFileItemListWidget::DolphinFileItemListWidget(QGraphicsItem* parent) :
KFileItemListWidget(parent)
{
@@ -28,4 +33,44 @@ DolphinFileItemListWidget::~DolphinFileItemListWidget()
{
}
+void DolphinFileItemListWidget::dataChanged(const QHash<QByteArray, QVariant>& current, const QSet<QByteArray>& roles)
+{
+ KFileItemListWidget::dataChanged(current, roles);
+
+ QColor color;
+ if (roles.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>(current.value("version").toInt());
+ if (version != KVersionControlPlugin::UnversionedVersion) {
+ const QColor textColor = styleOption().palette.text().color();
+ QColor tintColor = textColor;
+
+ // Using hardcoded colors is generally a bad idea. In this case the colors just act
+ // 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::darkGreen; 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:
+ case KVersionControlPlugin::NormalVersion:
+ default:
+ // use the default text color
+ return;
+ }
+
+ color = QColor((tintColor.red() + textColor.red()) / 2,
+ (tintColor.green() + textColor.green()) / 2,
+ (tintColor.blue() + textColor.blue()) / 2,
+ (tintColor.alpha() + textColor.alpha()) / 2);
+ }
+ }
+
+ setTextColor(color);
+}
+
#include "dolphinfileitemlistwidget.moc"