From be629fe8501941138da849cf1179ad67cd5570cb Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 8 Sep 2011 18:57:52 +0200 Subject: Version control: Apply text-color if an item is versioned --- src/views/dolphinfileitemlistwidget.cpp | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/views/dolphinfileitemlistwidget.cpp') 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 +#include + +#include + DolphinFileItemListWidget::DolphinFileItemListWidget(QGraphicsItem* parent) : KFileItemListWidget(parent) { @@ -28,4 +33,44 @@ DolphinFileItemListWidget::~DolphinFileItemListWidget() { } +void DolphinFileItemListWidget::dataChanged(const QHash& current, const QSet& 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(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" -- cgit v1.3