X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=4ccb5b5dd9fc7ea451b8e0d317044a220ab5ff07;hp=f2fc6da3d01b6301e88ddce30a723232ad80c466;hb=770b7ef54b03f3ebd1e29a58b4757505e1809b2d;hpb=efd5115ab858c22c2e679a1b59f925a0bdd6ff70 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index f2fc6da3..4ccb5b5d 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -83,10 +83,12 @@ BufferItem::ActivityLevel BufferItem::activity() const { void BufferItem::setActivity(const ActivityLevel &level) { _activity = level; + emit dataChanged(); } -void BufferItem::addActivity(const ActivityLevel &level) { +void BufferItem::updateActivity(const ActivityLevel &level) { _activity |= level; + emit dataChanged(); } QVariant BufferItem::data(int column, int role) const { @@ -103,11 +105,24 @@ QVariant BufferItem::data(int column, int role) const { return int(bufferType()); case NetworkModel::ItemActiveRole: return isActive(); + case NetworkModel::BufferActivityRole: + return qVariantFromValue((int)activity()); default: return PropertyMapItem::data(column, role); } } +bool BufferItem::setData(int column, const QVariant &value, int role) { + switch(role) { + case NetworkModel::BufferActivityRole: + setActivity((ActivityLevel)value.toInt()); + default: + return PropertyMapItem::setData(column, value, role); + } + return true; +} + + void BufferItem::attachIrcChannel(IrcChannel *ircChannel) { if(!ircChannel) return; @@ -617,13 +632,14 @@ void NetworkModel::bufferUpdated(BufferInfo bufferInfo) { emit dataChanged(itemindex, itemindex); } -void NetworkModel::bufferActivity(BufferItem::ActivityLevel level, BufferInfo bufferInfo) { -// BufferItem *bufferItem = buffer(buf->bufferInfo()); -// if(!bufferItem) { -// qWarning() << "NetworkModel::bufferActivity(): received Activity Info for uknown Buffer"; -// return; -// } -// bufferItem->setActivity(level); -// bufferUpdated(buf); +void NetworkModel::updateBufferActivity(const Message &msg) { + BufferItem::ActivityLevel level = BufferItem::OtherActivity; + if(msg.type() == Message::Plain || msg.type() == Message::Notice) + level |= BufferItem::NewMessage; + + if(msg.flags() & Message::Highlight) + level |= BufferItem::Highlight; + + bufferItem(msg.buffer())->updateActivity(level); }