X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=91d910c311801414e2a1bfd82c7835b1c1588921;hp=3e0a59f00e8ab326d79fa00f799dc282e0fa34ff;hb=eb606f89b0f97cbcb69b87e0ae749a05cd473ff2;hpb=0c77beae43efbe3d12e0d46aec935dfa8c7532b9 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 {