From 7f8acf4ede38a0178a97eb701a9382e455ca7c2d Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Thu, 31 Jan 2008 21:19:56 +0000 Subject: [PATCH] users who are away are now greyed out in the nickview --- src/client/client.cpp | 8 ------- src/client/client.h | 3 --- src/client/client.pri | 4 ++-- src/client/networkmodel.cpp | 4 ++++ src/qtui/nicklistwidget.cpp | 7 +++--- .../nickviewfilter.cpp} | 22 ++++++++++++++++--- .../nickviewfilter.h} | 14 ++++++------ src/uisupport/uisupport.pri | 4 ++-- version.inc | 2 +- 9 files changed, 39 insertions(+), 29 deletions(-) rename src/{client/nickmodel.cpp => uisupport/nickviewfilter.cpp} (76%) rename src/{client/nickmodel.h => uisupport/nickviewfilter.h} (86%) diff --git a/src/client/client.cpp b/src/client/client.cpp index 772601f5..c63632d9 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -29,7 +29,6 @@ #include "network.h" #include "networkmodel.h" #include "buffermodel.h" -#include "nickmodel.h" #include "quasselui.h" #include "signalproxy.h" #include "util.h" @@ -61,7 +60,6 @@ Client::Client(QObject *parent) mainUi(0), _networkModel(0), _bufferModel(0), - _nickModel(0), _connectedToCore(false), _syncedToCore(false) { @@ -79,7 +77,6 @@ void Client::init() { _networkModel, SLOT(bufferUpdated(BufferInfo))); _bufferModel = new BufferModel(_networkModel); - _nickModel = new NickModel(_networkModel); SignalProxy *p = signalProxy(); p->attachSignal(this, SIGNAL(sendSessionData(const QString &, const QVariant &)), @@ -179,11 +176,6 @@ BufferModel *Client::bufferModel() { return instance()->_bufferModel; } -NickModel *Client::nickModel() { - return instance()->_nickModel; -} - - SignalProxy *Client::signalProxy() { return instance()->_signalProxy; } diff --git a/src/client/client.h b/src/client/client.h index a9580570..f2b3ec3c 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -40,7 +40,6 @@ class NetworkModel; class BufferModel; class IrcUser; class IrcChannel; -class NickModel; class SignalProxy; struct NetworkInfo; @@ -91,7 +90,6 @@ public: static NetworkModel *networkModel(); static BufferModel *bufferModel(); - static NickModel *nickModel(); static SignalProxy *signalProxy(); static AbstractUiMsg *layoutMsg(const Message &); @@ -197,7 +195,6 @@ private: QPointer mainUi; QPointer _networkModel; QPointer _bufferModel; - QPointer _nickModel; ClientMode clientMode; diff --git a/src/client/client.pri b/src/client/client.pri index a35211c1..a6b81f4a 100644 --- a/src/client/client.pri +++ b/src/client/client.pri @@ -1,6 +1,6 @@ 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 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 1cde086b..7cfc5f61 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -415,6 +415,8 @@ int UserCategoryItem::categoryFromModes(const QString &modes) { QVariant UserCategoryItem::data(int column, int role) const { switch(role) { + case NetworkModel::ItemActiveRole: + return true; case NetworkModel::ItemTypeRole: return NetworkModel::UserCategoryItemType; case NetworkModel::BufferIdRole: @@ -457,6 +459,8 @@ quint64 IrcUserItem::id() const { 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: diff --git a/src/qtui/nicklistwidget.cpp b/src/qtui/nicklistwidget.cpp index 24f07a9a..42cc3507 100644 --- a/src/qtui/nicklistwidget.cpp +++ b/src/qtui/nicklistwidget.cpp @@ -24,7 +24,7 @@ #include "nickview.h" #include "client.h" #include "networkmodel.h" -#include "nickmodel.h" +#include "nickviewfilter.h" NickListWidget::NickListWidget(QWidget *parent) : QWidget(parent), @@ -50,8 +50,9 @@ void NickListWidget::setCurrentBuffer(BufferId bufferId) { 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); diff --git a/src/client/nickmodel.cpp b/src/uisupport/nickviewfilter.cpp similarity index 76% rename from src/client/nickmodel.cpp rename to src/uisupport/nickviewfilter.cpp index 14a804b3..28f1a7c7 100644 --- a/src/client/nickmodel.cpp +++ b/src/uisupport/nickviewfilter.cpp @@ -18,14 +18,15 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "nickmodel.h" +#include "nickviewfilter.h" #include "networkmodel.h" +#include /****************************************************************************************** - * NickModel + * NickViewFilter ******************************************************************************************/ -NickModel::NickModel(NetworkModel *parent) +NickViewFilter::NickViewFilter(NetworkModel *parent) : QSortFilterProxyModel(parent) { setSourceModel(parent); @@ -33,3 +34,18 @@ NickModel::NickModel(NetworkModel *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; +} diff --git a/src/client/nickmodel.h b/src/uisupport/nickviewfilter.h similarity index 86% rename from src/client/nickmodel.h rename to src/uisupport/nickviewfilter.h index 2dc35742..47da2948 100644 --- a/src/client/nickmodel.h +++ b/src/uisupport/nickviewfilter.h @@ -18,8 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef NICKMODEL_H -#define NICKMODEL_H +#ifndef NICKVIEWFILTER_H +#define NICKVIEWFILTER_H #include @@ -27,13 +27,13 @@ class NetworkModel; // 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 diff --git a/src/uisupport/uisupport.pri b/src/uisupport/uisupport.pri index f7f0e89e..984822eb 100644 --- a/src/uisupport/uisupport.pri +++ b/src/uisupport/uisupport.pri @@ -1,8 +1,8 @@ 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 = diff --git a/version.inc b/version.inc index 0478b2e4..1d16430d 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-pre"; quasselDate = "2008-01-30"; - quasselBuild = 415; + quasselBuild = 419; //! Minimum client build number the core needs clientBuildNeeded = 358; -- 2.20.1