diff options
| author | Peter Penz <[email protected]> | 2011-09-08 18:57:52 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-09-08 18:58:59 +0200 |
| commit | be629fe8501941138da849cf1179ad67cd5570cb (patch) | |
| tree | f10197fcac7c698a3768327475ef7b339a2f6397 /src/views/dolphinfileitemlistwidget.cpp | |
| parent | f8f78f223cf9549556bcbd9214a1e530d5217069 (diff) | |
Version control: Apply text-color if an item is versioned
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" |
