INIT_SYNCABLE_OBJECT(CoreBufferSyncer)
CoreBufferSyncer::CoreBufferSyncer(CoreSession *parent)
- : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), parent),
+ : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), Core::bufferActivities(parent->user()), parent),
_coreSession(parent),
_purgeBuffers(false)
{
+ connect(parent, SIGNAL(displayMsg(Message)), SLOT(addBufferActivity(Message)));
}
void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId)
{
- if (setLastSeenMsg(buffer, msgId))
+ if (setLastSeenMsg(buffer, msgId)) {
+ setBufferActivity(buffer, (int) Core::bufferActivity(buffer, msgId));
dirtyLastSeenBuffers << buffer;
+ }
}
Core::setBufferMarkerLineMsg(userId, bufferId, msgId);
}
+ foreach(BufferId bufferId, dirtyActivities) {
+ Core::setBufferActivity(userId, bufferId, activity(bufferId));
+ }
+
dirtyLastSeenBuffers.clear();
dirtyMarkerLineBuffers.clear();
+ dirtyActivities.clear();
}
}
}
}
+
+void CoreBufferSyncer::setBufferActivity(BufferId buffer, const int &activity) {
+ BufferSyncer::setBufferActivity(buffer, activity);
+ dirtyActivities << buffer;
+}