nicklist_performance++
[quassel.git] / src / uisupport / nickviewfilter.cpp
index 7a6e704..5332769 100644 (file)
  ***************************************************************************/
 
 #include "nickviewfilter.h"
-
 #include "networkmodel.h"
-
 #include "uisettings.h"
 
-#include <QColor>
-
 /******************************************************************************************
  * NickViewFilter
  ******************************************************************************************/
@@ -36,6 +32,15 @@ NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent)
   setSourceModel(parent);
   setDynamicSortFilter(true);
   setSortCaseSensitivity(Qt::CaseInsensitive);
+  setSortRole(TreeModel::SortRole);
+  loadColors();
+}
+
+void NickViewFilter::loadColors() {
+  UiSettings s("QtUi/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 {
@@ -43,30 +48,20 @@ QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
     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
+    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())
+    return true;
+
   QModelIndex source_child = source_parent.child(source_row, 0);
   return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value<BufferId>() == _bufferId);
 }