NickView gets it's own Delegate too and uses only QPalette for coloring
authorMarcus Eggenberger <egs@quassel-irc.org>
Sun, 1 Feb 2009 16:42:23 +0000 (17:42 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Sun, 1 Feb 2009 16:42:23 +0000 (17:42 +0100)
src/uisupport/nickview.cpp
src/uisupport/nickview.h
src/uisupport/nickviewfilter.cpp
src/uisupport/nickviewfilter.h

index d785f92..dd7d1af 100644 (file)
@@ -18,6 +18,8 @@
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
+#include "nickview.h"
+
 #include <QHeaderView>
 #include <QScrollBar>
 #include <QDebug>
@@ -25,7 +27,6 @@
 
 #include "buffermodel.h"
 #include "client.h"
-#include "nickview.h"
 #include "nickviewfilter.h"
 #include "networkmodel.h"
 #include "quasselui.h"
@@ -39,6 +40,12 @@ public:
 NickView::NickView(QWidget *parent)
   : QTreeView(parent)
 {
+  QAbstractItemDelegate *oldDelegate = itemDelegate();
+  NickViewDelegate *newDelegate = new NickViewDelegate(this);
+  setItemDelegate(newDelegate);
+  delete oldDelegate;
+
+  
   setIndentation(10);
   setAnimated(true);
   header()->hide();
@@ -143,3 +150,19 @@ void NickView::customEvent(QEvent *event) {
   }
   event->accept();
 }
+
+
+// ****************************************
+//  NickViewDelgate
+// ****************************************
+NickViewDelegate::NickViewDelegate(QObject *parent)
+  : QStyledItemDelegate(parent)
+{
+}
+
+void NickViewDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const {
+  QStyledItemDelegate::initStyleOption(option, index);
+
+  if(!index.data(NetworkModel::ItemActiveRole).toBool())
+    option->palette.setColor(QPalette::Text, option->palette.color(QPalette::Dark));
+}
index c88a9cc..a40b6d7 100644 (file)
@@ -48,4 +48,19 @@ private:
   void executeCommand(const BufferInfo & bufferInfo, const QString & command);
 };
 
+// ******************************
+//  NickViewDelgate
+// ******************************
+#include <QStyledItemDelegate>
+
+class NickViewDelegate : public QStyledItemDelegate {
+  Q_OBJECT
+
+public:
+  NickViewDelegate(QObject *parent = 0);
+
+protected:
+  virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const;
+};
+
 #endif
index d7dc6fd..5fa8e1f 100644 (file)
@@ -19,8 +19,8 @@
  ***************************************************************************/
 
 #include "nickviewfilter.h"
+
 #include "networkmodel.h"
-#include "uisettings.h"
 
 /******************************************************************************************
  * NickViewFilter
@@ -33,30 +33,8 @@ NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent)
   setDynamicSortFilter(true);
   setSortCaseSensitivity(Qt::CaseInsensitive);
   setSortRole(TreeModel::SortRole);
-  loadColors();
-}
-
-void NickViewFilter::loadColors() {
-  UiSettings s("QtUiStyle/Colors");
-  _FgOnlineStatus = s.value("onlineStatusFG", QVariant(QColor(Qt::black))).value<QColor>();
-  _FgAwayStatus = s.value("awayStatusFG", QVariant(QColor(Qt::gray))).value<QColor>();
-  // FIXME: use the style interface instead of qsettings
-}
-
-QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
-  if(role == Qt::ForegroundRole)
-    return foreground(index);
-  else
-    return QSortFilterProxyModel::data(index, role);
-}
-
-QVariant NickViewFilter::foreground(const QModelIndex &index) const {
-  if(!index.data(NetworkModel::ItemActiveRole).toBool())
-    return _FgAwayStatus;
-  return _FgOnlineStatus;
 }
 
-
 bool NickViewFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const {
   // root node, networkindexes, the bufferindex of the buffer this filter is active for and it's childs are accepted
   if(!source_parent.isValid())
index 5868c73..70809d3 100644 (file)
@@ -21,8 +21,8 @@
 #ifndef NICKVIEWFILTER_H
 #define NICKVIEWFILTER_H
 
-#include <QColor>
 #include <QSortFilterProxyModel>
+
 #include "types.h"
 
 class NetworkModel;
@@ -33,16 +33,12 @@ class NickViewFilter : public QSortFilterProxyModel {
 
 public:
   NickViewFilter(const BufferId &bufferId, NetworkModel *parent = 0);
-  QVariant data(const QModelIndex &index, int role) const;
-  QVariant foreground(const QModelIndex &index) const;
 
 protected:
   virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
 
 private:
   BufferId _bufferId;
-  QColor _FgOnlineStatus;
-  QColor _FgAwayStatus;
 
   void loadColors();
 };