: PropertyMapItem(QList<QString>() << "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:
}
}
+void BufferItem::clearActivityLevel() {
+ _activity = BufferInfo::NoActivity;
+ _lastSeenMarkerMsgId = _lastSeenMsgId;
+ emit dataChanged();
+}
+
void BufferItem::updateActivityLevel(const Message &msg) {
- if(isCurrentBuffer())
+ if(isCurrentBuffer()) {
return;
+ }
if(msg.flags() & Message::Self) // don't update activity for our own messages
return;
void BufferItem::setLastSeenMsgId(const MsgId &msgId) {
_lastSeenMsgId = msgId;
+ if(!isCurrentBuffer()) {
+ _lastSeenMarkerMsgId = msgId;
+ }
setActivityLevel(BufferInfo::NoActivity);
}
return _bufferItemCache[bufferId]->lastSeenMsgId();
}
+MsgId NetworkModel::lastSeenMarkerMsgId(BufferId bufferId) {
+ if(!_bufferItemCache.contains(bufferId))
+ return MsgId();
+
+ return _bufferItemCache[bufferId]->lastSeenMarkerMsgId();
+}
+
void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId) {
BufferItem *bufferItem = findBufferItem(bufferId);
if(!bufferItem) {
}
void NetworkModel::updateBufferActivity(const Message &msg) {
- bufferItem(msg.bufferInfo())->updateActivityLevel(msg);
+ BufferItem *item = bufferItem(msg.bufferInfo());
+ item->updateActivityLevel(msg);
+ if(item->isCurrentBuffer())
+ emit setLastSeenMsg(item->bufferId(), msg.msgId());
}
void NetworkModel::setBufferActivity(const BufferId &bufferId, BufferInfo::ActivityLevel level) {
bufferItem->setActivityLevel(level);
}
+void NetworkModel::clearBufferActivity(const BufferId &bufferId) {
+ BufferItem *bufferItem = findBufferItem(bufferId);
+ if(!bufferItem) {
+ qDebug() << "NetworkModel::clearBufferActivity(): buffer is unknown:" << bufferId;
+ return;
+ }
+ bufferItem->clearActivityLevel();
+}
+
const Network *NetworkModel::networkByIndex(const QModelIndex &index) const {
QVariant netVariant = index.data(NetworkIdRole);
if(!netVariant.isValid())