X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=0ffd9c0aff65d538dc58908e8203d5b8c609ac68;hp=75a18af812b6b117efed7c87ff8870241e7c9e1e;hb=99934fe47293f61e1e62ecc0f0d49f958a992c32;hpb=28d1a6cc6e9b153dbed0257241abb8aedf706ac2 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 75a18af8..0ffd9c0a 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -22,7 +22,6 @@ #include -#include "bufferinfo.h" #include "buffermodel.h" #include "client.h" #include "signalproxy.h" @@ -40,11 +39,16 @@ NetworkItem::NetworkItem(const NetworkId &netid, AbstractTreeItem *parent) : PropertyMapItem(QList() << "networkName" << "currentServer" << "nickCount", parent), _networkId(netid) { - setFlags(Qt::ItemIsEnabled); + setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); } QVariant NetworkItem::data(int column, int role) const { switch(role) { + case NetworkModel::BufferIdRole: + if(childCount()) + return child(0)->data(column, role); + else + return QVariant(); case NetworkModel::NetworkIdRole: return qVariantFromValue(_networkId); case NetworkModel::ItemTypeRole: @@ -174,19 +178,18 @@ QString NetworkItem::toolTip(int column) const { BufferItem::BufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent) : PropertyMapItem(QStringList() << "bufferName" << "topic" << "nickCount", parent), _bufferInfo(bufferInfo), - _activity(Buffer::NoActivity) + _activity(BufferInfo::NoActivity) { setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled); } -void BufferItem::setActivityLevel(Buffer::ActivityLevel level) { +void BufferItem::setActivityLevel(BufferInfo::ActivityLevel level) { if(_activity != level) { _activity = level; emit dataChanged(); } } -//void BufferItem::updateActivityLevel(Buffer::ActivityLevel level) { void BufferItem::updateActivityLevel(const Message &msg) { if(isCurrentBuffer()) return; @@ -197,14 +200,14 @@ void BufferItem::updateActivityLevel(const Message &msg) { if(lastSeenMsgId() >= msg.msgId()) return; - Buffer::ActivityLevel oldLevel = activityLevel(); + BufferInfo::ActivityLevel oldLevel = activityLevel(); - _activity |= Buffer::OtherActivity; + _activity |= BufferInfo::OtherActivity; if(msg.type() & (Message::Plain | Message::Notice | Message::Action)) - _activity |= Buffer::NewMessage; + _activity |= BufferInfo::NewMessage; if(msg.flags() & Message::Highlight) - _activity |= Buffer::Highlight; + _activity |= BufferInfo::Highlight; if(oldLevel != _activity) emit dataChanged(); @@ -235,7 +238,7 @@ bool BufferItem::setData(int column, const QVariant &value, int role) { qDebug() << "BufferItem::setData(int column, const QVariant &value, int role):" << this << column << value << role; switch(role) { case NetworkModel::BufferActivityRole: - setActivityLevel((Buffer::ActivityLevel)value.toInt()); + setActivityLevel((BufferInfo::ActivityLevel)value.toInt()); return true; default: return PropertyMapItem::setData(column, value, role); @@ -248,6 +251,11 @@ void BufferItem::setBufferName(const QString &name) { emit dataChanged(0); } +void BufferItem::setLastSeenMsgId(const MsgId &msgId) { + _lastSeenMsgId = msgId; + setActivityLevel(BufferInfo::NoActivity); +} + bool BufferItem::isCurrentBuffer() const { return _bufferInfo.bufferId() == Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value(); } @@ -921,7 +929,7 @@ void NetworkModel::updateBufferActivity(const Message &msg) { bufferItem(msg.bufferInfo())->updateActivityLevel(msg); } -void NetworkModel::setBufferActivity(const BufferId &bufferId, Buffer::ActivityLevel level) { +void NetworkModel::setBufferActivity(const BufferId &bufferId, BufferInfo::ActivityLevel level) { BufferItem *bufferItem = findBufferItem(bufferId); if(!bufferItem) { qDebug() << "NetworkModel::setBufferActivity(): buffer is unknown:" << bufferId;