Save the mainwindow state properly when exiting the client.
[quassel.git] / src / uisupport / nickviewfilter.cpp
index 28f1a7c..907034d 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);
 }
 
 QVariant NickViewFilter::data(const QModelIndex &index, int role) const {
@@ -39,13 +44,34 @@ 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 QColor(Qt::gray);
+    return awayStatusFG.value<QColor>();
   
-  return QColor(Qt::black);
+  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);
 }