X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;h=27e7ead2134cd11cc88386a8b8d4ca9542409952;hp=55c28b266a42125dac766fc5b50686eda710faca;hb=694f9bfbf7f1af19108461c7e00d133e55082bce;hpb=61c8d84d1c849373e0f115dc748ed45cff95287d diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 55c28b26..27e7ead2 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -25,138 +25,158 @@ #include "corenetwork.h" #include "ircchannel.h" -class PurgeEvent : public QEvent { +class PurgeEvent : public QEvent +{ public: - PurgeEvent() : QEvent(QEvent::User) {} + 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()), parent), _coreSession(parent), _purgeBuffers(false) { } -void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { - if(setLastSeenMsg(buffer, msgId)) - dirtyLastSeenBuffers << buffer; + +void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) +{ + if (setLastSeenMsg(buffer, msgId)) + dirtyLastSeenBuffers << buffer; } -void CoreBufferSyncer::requestSetMarkerLine(BufferId buffer, const MsgId &msgId) { - if(setMarkerLine(buffer, msgId)) - dirtyMarkerLineBuffers << buffer; + +void CoreBufferSyncer::requestSetMarkerLine(BufferId buffer, const MsgId &msgId) +{ + if (setMarkerLine(buffer, msgId)) + dirtyMarkerLineBuffers << buffer; } -void CoreBufferSyncer::storeDirtyIds() { - UserId userId = _coreSession->user(); - MsgId msgId; - foreach(BufferId bufferId, dirtyLastSeenBuffers) { - msgId = lastSeenMsg(bufferId); - if(msgId.isValid()) - Core::setBufferLastSeenMsg(userId, bufferId, msgId); - } - - foreach(BufferId bufferId, dirtyMarkerLineBuffers) { - msgId = markerLine(bufferId); - if(msgId.isValid()) - Core::setBufferMarkerLineMsg(userId, bufferId, msgId); - } - - dirtyLastSeenBuffers.clear(); - dirtyMarkerLineBuffers.clear(); + +void CoreBufferSyncer::storeDirtyIds() +{ + UserId userId = _coreSession->user(); + MsgId msgId; + foreach(BufferId bufferId, dirtyLastSeenBuffers) { + msgId = lastSeenMsg(bufferId); + if (msgId.isValid()) + Core::setBufferLastSeenMsg(userId, bufferId, msgId); + } + + foreach(BufferId bufferId, dirtyMarkerLineBuffers) { + msgId = markerLine(bufferId); + if (msgId.isValid()) + Core::setBufferMarkerLineMsg(userId, bufferId, msgId); + } + + dirtyLastSeenBuffers.clear(); + dirtyMarkerLineBuffers.clear(); } -void CoreBufferSyncer::removeBuffer(BufferId bufferId) { - BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId); - if(!bufferInfo.isValid()) { - qWarning() << "CoreBufferSyncer::removeBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user(); - return; - } - - if(bufferInfo.type() == BufferInfo::StatusBuffer) { - qWarning() << "CoreBufferSyncer::removeBuffer(): Status Buffers cannot be removed!"; - return; - } - - if(bufferInfo.type() == BufferInfo::ChannelBuffer) { - CoreNetwork *net = _coreSession->network(bufferInfo.networkId()); - if(!net) { - qWarning() << "CoreBufferSyncer::removeBuffer(): Received BufferInfo with unknown networkId!"; - return; + +void CoreBufferSyncer::removeBuffer(BufferId bufferId) +{ + BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId); + if (!bufferInfo.isValid()) { + qWarning() << "CoreBufferSyncer::removeBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user(); + return; } - IrcChannel *chan = net->ircChannel(bufferInfo.bufferName()); - if(chan) { - qWarning() << "CoreBufferSyncer::removeBuffer(): Unable to remove Buffer for joined Channel:" << bufferInfo.bufferName(); - return; + + if (bufferInfo.type() == BufferInfo::StatusBuffer) { + qWarning() << "CoreBufferSyncer::removeBuffer(): Status Buffers cannot be removed!"; + return; + } + + if (bufferInfo.type() == BufferInfo::ChannelBuffer) { + CoreNetwork *net = _coreSession->network(bufferInfo.networkId()); + if (!net) { + qWarning() << "CoreBufferSyncer::removeBuffer(): Received BufferInfo with unknown networkId!"; + return; + } + IrcChannel *chan = net->ircChannel(bufferInfo.bufferName()); + if (chan) { + qWarning() << "CoreBufferSyncer::removeBuffer(): Unable to remove Buffer for joined Channel:" << bufferInfo.bufferName(); + return; + } } - } - if(Core::removeBuffer(_coreSession->user(), bufferId)) - BufferSyncer::removeBuffer(bufferId); + if (Core::removeBuffer(_coreSession->user(), bufferId)) + BufferSyncer::removeBuffer(bufferId); } -void CoreBufferSyncer::renameBuffer(BufferId bufferId, QString newName) { - BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId); - if(!bufferInfo.isValid()) { - qWarning() << "CoreBufferSyncer::renameBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user(); - return; - } - if(bufferInfo.type() != BufferInfo::QueryBuffer) { - qWarning() << "CoreBufferSyncer::renameBuffer(): only QueryBuffers can be renamed" << bufferId; - return; - } +void CoreBufferSyncer::renameBuffer(BufferId bufferId, QString newName) +{ + BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId); + if (!bufferInfo.isValid()) { + qWarning() << "CoreBufferSyncer::renameBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user(); + return; + } + + if (bufferInfo.type() != BufferInfo::QueryBuffer) { + qWarning() << "CoreBufferSyncer::renameBuffer(): only QueryBuffers can be renamed" << bufferId; + return; + } - if(Core::renameBuffer(_coreSession->user(), bufferId, newName)) - BufferSyncer::renameBuffer(bufferId, newName); + if (Core::renameBuffer(_coreSession->user(), bufferId, newName)) + BufferSyncer::renameBuffer(bufferId, newName); } -void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2) { - 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(); - return; - } - - if(bufferInfo1.type() != BufferInfo::QueryBuffer || bufferInfo2.type() != BufferInfo::QueryBuffer) { - qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): only QueryBuffers can be merged!" << bufferId1 << bufferId2; - return; - } - - if(Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) { - BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2); - } + +void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2) +{ + 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(); + return; + } + + if (bufferInfo1.type() != BufferInfo::QueryBuffer || bufferInfo2.type() != BufferInfo::QueryBuffer) { + qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): only QueryBuffers can be merged!" << bufferId1 << bufferId2; + return; + } + + if (Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) { + BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2); + } } -void CoreBufferSyncer::customEvent(QEvent *event) { - if(event->type() != QEvent::User) - return; - purgeBufferIds(); - event->accept(); +void CoreBufferSyncer::customEvent(QEvent *event) +{ + if (event->type() != QEvent::User) + return; + + purgeBufferIds(); + event->accept(); } -void CoreBufferSyncer::requestPurgeBufferIds() { - if(_purgeBuffers) - return; - _purgeBuffers = true; - QCoreApplication::postEvent(this, new PurgeEvent()); +void CoreBufferSyncer::requestPurgeBufferIds() +{ + if (_purgeBuffers) + return; + + _purgeBuffers = true; + QCoreApplication::postEvent(this, new PurgeEvent()); } -void CoreBufferSyncer::purgeBufferIds() { - _purgeBuffers = false; - QList bufferInfos = Core::requestBuffers(_coreSession->user()); - QSet actualBuffers; - foreach(BufferInfo bufferInfo, bufferInfos) { - actualBuffers << bufferInfo.bufferId(); - } - - QSet storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet(); - foreach(BufferId bufferId, storedIds) { - if(!actualBuffers.contains(bufferId)) { - BufferSyncer::removeBuffer(bufferId); + +void CoreBufferSyncer::purgeBufferIds() +{ + _purgeBuffers = false; + QList bufferInfos = Core::requestBuffers(_coreSession->user()); + QSet actualBuffers; + foreach(BufferInfo bufferInfo, bufferInfos) { + actualBuffers << bufferInfo.bufferId(); + } + + QSet storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet(); + foreach(BufferId bufferId, storedIds) { + if (!actualBuffers.contains(bufferId)) { + BufferSyncer::removeBuffer(bufferId); + } } - } }