Better time formatting by using an explicit format
[quassel.git] / src / uisupport / nickviewfilter.cpp
index e4955ac..7463852 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-2012 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
 #include "nickviewfilter.h"
 
+#include "buffersettings.h"
+#include "graphicalui.h"
+#include "iconloader.h"
 #include "networkmodel.h"
-
-#include "uisettings.h"
-
-#include <QColor>
+#include "uistyle.h"
 
 /******************************************************************************************
  * NickViewFilter
  ******************************************************************************************/
 NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent)
-  : QSortFilterProxyModel(parent),
+    : QSortFilterProxyModel(parent),
     _bufferId(bufferId)
 {
-  setSourceModel(parent);
-  setDynamicSortFilter(true);
-  setSortCaseSensitivity(Qt::CaseInsensitive);
+    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)));
+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 children are accepted
+    if (!source_parent.isValid())
+        return true;
 
-  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
+    QModelIndex source_child = source_parent.child(source_row, 0);
+    return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value<BufferId>() == _bufferId);
 }
 
 
-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);
+    }
 }