style button is smaller now
[quassel.git] / src / uisupport / nickviewfilter.cpp
index 7a6e704..ea33660 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "nickviewfilter.h"
 
+#include "buffersettings.h"
+#include "graphicalui.h"
+#include "iconloader.h"
 #include "networkmodel.h"
-
-#include "uisettings.h"
-
-#include <QColor>
+#include "uistyle.h"
 
 /******************************************************************************************
  * NickViewFilter
@@ -36,37 +36,26 @@ NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent)
   setSourceModel(parent);
   setDynamicSortFilter(true);
   setSortCaseSensitivity(Qt::CaseInsensitive);
+  setSortRole(TreeModel::SortRole);
 }
 
-QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
-  if(role == Qt::ForegroundRole)
-    return foreground(index);
-  else
-    return QSortFilterProxyModel::data(index, role);
-//   else {
-//     QVariant d = 
-//     if(role == 0)
-//       qDebug() << index << role << d;
-//     return d;
-//   }
-}
-
-QVariant NickViewFilter::foreground(const QModelIndex &index) const {
-  UiSettings s("QtUi/Colors");
-  QVariant onlineStatusFG = s.value("onlineStatusFG", QVariant(QColor(Qt::black)));
-  QVariant awayStatusFG = s.value("awayStatusFG", QVariant(QColor(Qt::gray)));
-
-  if(!index.data(NetworkModel::ItemActiveRole).toBool())
-    return awayStatusFG.value<QColor>();
-  
-  return onlineStatusFG.value<QColor>();
-  
-  // FIXME:: make colors configurable;
-  // FIXME: use the style interface instead of qsettings
-}
-
-
 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())
+    return true;
+
   QModelIndex source_child = source_parent.child(source_row, 0);
   return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value<BufferId>() == _bufferId);
 }
+
+QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
+  switch(role) {
+  case Qt::FontRole:
+  case Qt::ForegroundRole:
+  case Qt::BackgroundRole:
+  case Qt::DecorationRole:
+    return GraphicalUi::uiStyle()->nickViewItemData(mapToSource(index), role);
+  default:
+    return QSortFilterProxyModel::data(index, role);
+  }
+}