#include "network.h"
 #include "networkmodel.h"
 #include "buffermodel.h"
-#include "nickmodel.h"
 #include "quasselui.h"
 #include "signalproxy.h"
 #include "util.h"
     mainUi(0),
     _networkModel(0),
     _bufferModel(0),
-    _nickModel(0),
     _connectedToCore(false),
     _syncedToCore(false)
 {
           _networkModel, SLOT(bufferUpdated(BufferInfo)));
 
   _bufferModel = new BufferModel(_networkModel);
-  _nickModel = new NickModel(_networkModel);
 
   SignalProxy *p = signalProxy();
   p->attachSignal(this, SIGNAL(sendSessionData(const QString &, const QVariant &)),
   return instance()->_bufferModel;
 }
 
-NickModel *Client::nickModel() {
-  return instance()->_nickModel;
-}
-
-
 SignalProxy *Client::signalProxy() {
   return instance()->_signalProxy;
 }
 
 class BufferModel;
 class IrcUser;
 class IrcChannel;
-class NickModel;
 class SignalProxy;
 struct NetworkInfo;
 
 
   static NetworkModel *networkModel();
   static BufferModel *bufferModel();
-  static NickModel *nickModel();
   static SignalProxy *signalProxy();
 
   static AbstractUiMsg *layoutMsg(const Message &);
   QPointer<AbstractUi> mainUi;
   QPointer<NetworkModel> _networkModel;
   QPointer<BufferModel> _bufferModel;
-  QPointer<NickModel> _nickModel;
 
   ClientMode clientMode;
 
 
 DEPMOD = common
 QT_MOD = core network gui
 SRCS += buffer.cpp treemodel.cpp networkmodel.cpp buffermodel.cpp client.cpp clientsettings.cpp clientsyncer.cpp \
-        mappedselectionmodel.cpp modelpropertymapper.cpp nickmodel.cpp selectionmodelsynchronizer.cpp
+        mappedselectionmodel.cpp modelpropertymapper.cpp selectionmodelsynchronizer.cpp
 HDRS += buffer.h treemodel.h networkmodel.h buffermodel.h client.h clientsettings.h clientsyncer.h quasselui.h \
-        mappedselectionmodel.h modelpropertymapper.h nickmodel.h selectionmodelsynchronizer.h
+        mappedselectionmodel.h modelpropertymapper.h selectionmodelsynchronizer.h
 
 
 QVariant UserCategoryItem::data(int column, int role) const {
   switch(role) {
+  case NetworkModel::ItemActiveRole:
+    return true;
   case NetworkModel::ItemTypeRole:
     return NetworkModel::UserCategoryItemType;
   case NetworkModel::BufferIdRole:
 
 QVariant IrcUserItem::data(int column, int role) const {
   switch(role) {
+  case NetworkModel::ItemActiveRole:
+    return !_ircUser->isAway();
   case NetworkModel::ItemTypeRole:
     return NetworkModel::IrcUserItemType;
   case NetworkModel::BufferIdRole:
 
 #include "nickview.h"
 #include "client.h"
 #include "networkmodel.h"
-#include "nickmodel.h"
+#include "nickviewfilter.h"
 
 NickListWidget::NickListWidget(QWidget *parent)
   : QWidget(parent),
     ui.stackedWidget->setCurrentWidget(nickViews.value(bufferId));
   } else {
     NickView *view = new NickView(this);
-    view->setModel(Client::nickModel());
-    view->setRootIndex(Client::nickModel()->mapFromSource(bufferIdx));
+    NickViewFilter *filter = new NickViewFilter(Client::networkModel());
+    view->setModel(filter);
+    view->setRootIndex(filter->mapFromSource(bufferIdx));
     nickViews[bufferId] = view;
     ui.stackedWidget->addWidget(view);
     ui.stackedWidget->setCurrentWidget(view);
 
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#include "nickmodel.h"
+#include "nickviewfilter.h"
 
 #include "networkmodel.h"
+#include <QColor>
 
 /******************************************************************************************
- * NickModel
+ * NickViewFilter
  ******************************************************************************************/
-NickModel::NickModel(NetworkModel *parent)
+NickViewFilter::NickViewFilter(NetworkModel *parent)
   : QSortFilterProxyModel(parent)
 {
   setSourceModel(parent);
   setSortCaseSensitivity(Qt::CaseInsensitive);
 }
 
+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 QColor(Qt::gray);
+  
+  return QColor(Qt::black);
+  
+  // FIXME:: make colors configurable;
+}
 
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#ifndef NICKMODEL_H
-#define NICKMODEL_H
+#ifndef NICKVIEWFILTER_H
+#define NICKVIEWFILTER_H
 
 #include <QSortFilterProxyModel>
 
 
 // This is proxymodel is purely for the sorting right now
 // the old nickmodel is stored for future reference in /devnotes
-
-//! This ProxyModel can be used on top of a NickModel in order to provide a sorted nicklist and to hide unused categories.
-class NickModel : public QSortFilterProxyModel {
+class NickViewFilter : public QSortFilterProxyModel {
   Q_OBJECT
 
-  public:
-    NickModel(NetworkModel *parent = 0);
+public:
+  NickViewFilter(NetworkModel *parent = 0);
+  QVariant data(const QModelIndex &index, int role) const;
+  QVariant foreground(const QModelIndex &index) const;
 };
 
 #endif
 
 DEPMOD = common client
 QT_MOD = core gui network
 
-SRCS += bufferview.cpp bufferviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
-HDRS += bufferview.h bufferviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
+SRCS += bufferview.cpp bufferviewfilter.cpp nickviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
+HDRS += bufferview.h bufferviewfilter.h nickviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
 
 FORMNAMES = 
 
 
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-01-30";
-  quasselBuild = 415;
+  quasselBuild = 419;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 358;