nicklist_performance++
[quassel.git] / src / uisupport / nickviewfilter.cpp
index 993bac0..5332769 100644 (file)
  ***************************************************************************/
 
 #include "nickviewfilter.h"
-
 #include "networkmodel.h"
-
 #include "uisettings.h"
 
-#include <QColor>
-
 /******************************************************************************************
  * NickViewFilter
  ******************************************************************************************/
-NickViewFilter::NickViewFilter(NetworkModel *parent)
-  : QSortFilterProxyModel(parent)
+NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent)
+  : QSortFilterProxyModel(parent),
+    _bufferId(bufferId)
 {
   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 {
@@ -45,15 +51,17 @@ QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
 }
 
 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);
 }