]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinfileitemdelegate.cpp
DolphinContextMenu: Set the properties action from actionCollection
[dolphin.git] / src / views / dolphinfileitemdelegate.cpp
index 3e537ffeb7afffeeb75ad02e73b423995d0c2d55..4d66c73f10ef782d93c3664b45ea482906802a57 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at>                  *
+ *   Copyright (C) 2008 by Peter Penz <peter.penz19@gmail.com>             *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
 #include "dolphinfileitemdelegate.h"
 
 #include "dolphinmodel.h"
-#include <kfileitem.h>
-#include <kicon.h>
-#include <kiconloader.h>
-#include <kstringhandler.h>
+#include <KColorScheme>
+#include <KFileItem>
+#include <KGlobalSettings>
+#include <KIcon>
+#include <KIconLoader>
+#include <KStringHandler>
 
 #include <QAbstractItemModel>
 #include <QAbstractProxyModel>
@@ -36,9 +38,11 @@ DolphinFileItemDelegate::DolphinFileItemDelegate(QObject* parent) :
     KFileItemDelegate(parent),
     m_hasMinimizedNameColumn(false),
     m_cachedSize(),
-    m_cachedEmblems()
+    m_cachedEmblems(),
+    m_cachedInactiveTextColorDirty(true)
 {
     setJobTransfersVisible(true);
+    connect(KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()), this, SLOT(handleDisplayPaletteChange()));
 }
 
 DolphinFileItemDelegate::~DolphinFileItemDelegate()
@@ -58,6 +62,18 @@ void DolphinFileItemDelegate::paint(QPainter* painter,
         adjustOptionWidth(opt, proxyModel, dolphinModel, index);
     }
 
+    if (!isNameColumn) {
+        // Use the inactive text color for all columns except the name column. This indicates for the user that
+        // hovering other columns does not change the actions context.
+        QPalette palette = opt.palette;
+        if (m_cachedInactiveTextColorDirty) {
+            m_cachedInactiveTextColor = KColorScheme(QPalette::Active).foreground(KColorScheme::InactiveText).color();
+            m_cachedInactiveTextColorDirty = false;
+        }
+        palette.setColor(QPalette::Text, m_cachedInactiveTextColor);
+        opt.palette = palette;
+    }
+
     if (dolphinModel->hasVersionData() && isNameColumn) {
         // The currently shown items are under revision control. Show the current revision
         // state by adding an emblem and changing the text tintColor.
@@ -92,6 +108,11 @@ int DolphinFileItemDelegate::nameColumnWidth(const QString& name, const QStyleOp
     return width;
 }
 
+void DolphinFileItemDelegate::handleDisplayPaletteChange()
+{
+    m_cachedInactiveTextColorDirty = true;
+}
+
 void DolphinFileItemDelegate::adjustOptionWidth(QStyleOptionViewItemV4& option,
                                                 const QAbstractProxyModel* proxyModel,
                                                 const DolphinModel* dolphinModel,
@@ -120,9 +141,9 @@ void DolphinFileItemDelegate::adjustOptionTextColor(QStyleOptionViewItemV4& opti
     // have been optimized for the base colors of the corresponding Oxygen emblems.
     switch (state) {
     case KVersionControlPlugin::UpdateRequiredVersion:          tintColor = Qt::yellow; break;
-    case KVersionControlPlugin::LocallyModifiedUnstagedVersion: tintColor = Qt::darkRed; break;
+    case KVersionControlPlugin::LocallyModifiedUnstagedVersion: tintColor = Qt::darkGreen; break;
     case KVersionControlPlugin::LocallyModifiedVersion:         tintColor = Qt::green; break;
-    case KVersionControlPlugin::AddedVersion:                   tintColor = Qt::darkGreen; 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: