X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnickviewfilter.cpp;h=5332769151e62f169633c607e3ee15f3040e5968;hp=28f1a7c70888927a6410fc9bf727b767eea5db38;hb=09e9b338ecb81a79eddc38b03daef7c31dcfe493;hpb=7f8acf4ede38a0178a97eb701a9382e455ca7c2d diff --git a/src/uisupport/nickviewfilter.cpp b/src/uisupport/nickviewfilter.cpp index 28f1a7c7..53327691 100644 --- a/src/uisupport/nickviewfilter.cpp +++ b/src/uisupport/nickviewfilter.cpp @@ -19,19 +19,28 @@ ***************************************************************************/ #include "nickviewfilter.h" - #include "networkmodel.h" -#include +#include "uisettings.h" /****************************************************************************************** * 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(); + _FgAwayStatus = s.value("awayStatusFG", QVariant(QColor(Qt::gray))).value(); + // FIXME: use the style interface instead of qsettings } QVariant NickViewFilter::data(const QModelIndex &index, int role) const { @@ -43,9 +52,16 @@ QVariant NickViewFilter::data(const QModelIndex &index, int role) const { 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; + 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); }