/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
PurgeEvent() : QEvent(QEvent::User) {}
};
-
-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()), Core::highlightCounts(parent->user()), parent),
_coreSession(parent),
_purgeBuffers(false)
{
+ connect(parent, SIGNAL(displayMsg(Message)), SLOT(addBufferActivity(Message)));
+ connect(parent, SIGNAL(displayMsg(Message)), SLOT(addCoreHighlight(Message)));
}
void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId)
{
- if (setLastSeenMsg(buffer, msgId))
+ if (setLastSeenMsg(buffer, msgId)) {
+ int activity = Core::bufferActivity(buffer, msgId);
+ int highlightCount = Core::highlightCount(buffer, msgId);
+
+ setBufferActivity(buffer, activity);
+ setHighlightCount(buffer, highlightCount);
+
dirtyLastSeenBuffers << buffer;
+ }
}
Core::setBufferMarkerLineMsg(userId, bufferId, msgId);
}
+ foreach(BufferId bufferId, dirtyActivities) {
+ Core::setBufferActivity(userId, bufferId, activity(bufferId));
+ }
+
+ foreach(BufferId bufferId, dirtyHighlights) {
+ Core::setHighlightCount(userId, bufferId, highlightCount(bufferId));
+ }
+
dirtyLastSeenBuffers.clear();
dirtyMarkerLineBuffers.clear();
+ dirtyActivities.clear();
+ dirtyHighlights.clear();
}
BufferInfo bufferInfo1 = Core::getBufferInfo(_coreSession->user(), bufferId1);
BufferInfo bufferInfo2 = Core::getBufferInfo(_coreSession->user(), bufferId2);
if (!bufferInfo1.isValid() || !bufferInfo2.isValid()) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): invalid BufferIds:" << bufferId1 << bufferId2 << "for User:" << _coreSession->user();
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): invalid BufferIds:" << bufferId1 << bufferId2 << "for User:" << _coreSession->user();
return;
}
- if (bufferInfo1.type() != BufferInfo::QueryBuffer || bufferInfo2.type() != BufferInfo::QueryBuffer) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): only QueryBuffers can be merged!" << bufferId1 << bufferId2;
- return;
+ if ((bufferInfo1.type() != BufferInfo::QueryBuffer && bufferInfo1.type() != BufferInfo::ChannelBuffer)
+ || (bufferInfo2.type() != BufferInfo::QueryBuffer && bufferInfo2.type() != BufferInfo::ChannelBuffer)) {
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): only QueryBuffers and/or ChannelBuffers can be merged!" << bufferId1 << bufferId2;
+ return;
}
if (Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) {
}
}
}
+
+void CoreBufferSyncer::setBufferActivity(BufferId buffer, int activity) {
+ BufferSyncer::setBufferActivity(buffer, activity);
+ dirtyActivities << buffer;
+}
+
+void CoreBufferSyncer::setHighlightCount(BufferId buffer, int highlightCount) {
+ BufferSyncer::setHighlightCount(buffer, highlightCount);
+ dirtyHighlights << buffer;
+}