From: Marcus Eggenberger Date: Mon, 4 Aug 2008 19:12:54 +0000 (+0200) Subject: Fixing BR #234. Queries where the chatpartner is away are no longer shown as disabled... X-Git-Tag: 0.3.0~118 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=4a174a228d64ab906a0944f3de3dfe4324d058ff Fixing BR #234. Queries where the chatpartner is away are no longer shown as disabled but are crossed through. Not the nicest solution though. We probably should create our own delegate --- diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 51f4123d..d6c18d7c 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -293,14 +293,15 @@ QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *pare IrcUser *ircUser = net->ircUser(bufferInfo.bufferName()); if(ircUser) attachIrcUser(ircUser); - } -bool QueryBufferItem::isActive() const { - if(_ircUser) - return !_ircUser->isAway(); - else - return false; +QVariant QueryBufferItem::data(int column, int role) const { + switch(role) { + case NetworkModel::UserAwayRole: + return (bool)_ircUser ? _ircUser->isAway() : false; + default: + return BufferItem::data(column, role); + } } QString QueryBufferItem::toolTip(int column) const { diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h index 31e4dcaa..b9920e25 100644 --- a/src/client/networkmodel.h +++ b/src/client/networkmodel.h @@ -148,7 +148,8 @@ class QueryBufferItem : public BufferItem { public: QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *parent); - virtual bool isActive() const; + virtual QVariant data(int column, int role) const; + virtual inline bool isActive() const { return (bool)_ircUser; } virtual QString toolTip(int column) const; public slots: @@ -261,7 +262,8 @@ public: BufferIdRole, NetworkIdRole, BufferInfoRole, - ItemTypeRole + ItemTypeRole, + UserAwayRole }; enum itemType { diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 6a73e7f4..6b81c38f 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -20,7 +20,9 @@ #include "bufferviewfilter.h" -#include +#include +#include +#include #include "buffermodel.h" #include "client.h" @@ -281,10 +283,21 @@ bool BufferViewFilter::networkLessThan(const QModelIndex &source_left, const QMo } QVariant BufferViewFilter::data(const QModelIndex &index, int role) const { - if(role == Qt::ForegroundRole) + switch(role) { + case Qt::ForegroundRole: return foreground(index); - else + case Qt::BackgroundRole: + if(index.data(NetworkModel::UserAwayRole).toBool()) { + QLinearGradient gradient(0, 0, 0, 18); + gradient.setColorAt(0.4, QApplication::palette().color(QPalette::Normal, QPalette::Base)); + gradient.setColorAt(0.5, QApplication::palette().color(QPalette::Disabled, QPalette::Base)); + gradient.setColorAt(0.6, QApplication::palette().color(QPalette::Normal, QPalette::Base)); + return QBrush(gradient); + } + // else: fallthrough to default + default: return QSortFilterProxyModel::data(index, role); + } } QVariant BufferViewFilter::foreground(const QModelIndex &index) const {