diff options
Diffstat (limited to 'src/views/dolphinfileitemlistwidget.cpp')
| -rw-r--r-- | src/views/dolphinfileitemlistwidget.cpp | 45 |
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" |
