From: Marcus Eggenberger Date: Sat, 14 Feb 2009 11:56:50 +0000 (+0100) Subject: Using join and part icons to indicate in the buffer view if a channel is joined. X-Git-Tag: 0.4.0~56 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=eb606f89b0f97cbcb69b87e0ae749a05cd473ff2 Using join and part icons to indicate in the buffer view if a channel is joined. This helps to determine that you're not in a channel when there are still unread messages. Perhaps we can have a version of these icons without the '+' and 'x'... --- diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 3e0a59f0..91d910c3 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -45,6 +45,8 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * : QSortFilterProxyModel(model), _config(0), _sortOrder(Qt::AscendingOrder), + _channelJoinedIcon(SmallIcon("irc-join-channel")), + _channelPartedIcon(SmallIcon("irc-close-channel")), _userOfflineIcon(SmallIcon("im-user-offline")), _userAwayIcon(SmallIcon("im-user-away")), _userOnlineIcon(SmallIcon("im-user")), @@ -392,21 +394,29 @@ QVariant BufferViewFilter::icon(const QModelIndex &index) const { return QVariant(); QModelIndex source_index = mapToSource(index); - if(sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt() != NetworkModel::BufferItemType) - return QVariant(); + NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt(); + BufferInfo::Type bufferType = (BufferInfo::Type)sourceModel()->data(source_index, NetworkModel::BufferTypeRole).toInt(); + bool isActive = sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool(); - if(sourceModel()->data(source_index, NetworkModel::BufferTypeRole).toInt() != BufferInfo::QueryBuffer) + if(itemType != NetworkModel::BufferItemType) return QVariant(); - if(!sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool()) - return _userOfflineIcon; - - if(sourceModel()->data(source_index, NetworkModel::UserAwayRole).toBool()) - return _userAwayIcon; - else - return _userOnlineIcon; - - return QVariant(); + switch(bufferType) { + case BufferInfo::ChannelBuffer: + if(isActive) + return _channelJoinedIcon; + else + return _channelPartedIcon; + case BufferInfo::QueryBuffer: + if(!isActive) + return _userOfflineIcon; + if(sourceModel()->data(source_index, NetworkModel::UserAwayRole).toBool()) + return _userAwayIcon; + else + return _userOnlineIcon; + default: + return QVariant(); + } } QVariant BufferViewFilter::checkedState(const QModelIndex &index) const { diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 50165210..5bacfaf0 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -96,6 +96,8 @@ private: QPointer _config; Qt::SortOrder _sortOrder; + QPixmap _channelJoinedIcon; + QPixmap _channelPartedIcon; QPixmap _userOfflineIcon; QPixmap _userAwayIcon; QPixmap _userOnlineIcon;