X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fbacklogrequester.cpp;h=2662dfcc2cca76f5d115aeaa689b5d8f4fc03b0d;hb=de6fd75928284a7c8788e00a36e5de7e64b9e168;hp=920e56475c54221fddbd5440dca56dfbff04a390;hpb=60c6384aae4035545cd02f6032dd810e98ddba37;p=quassel.git diff --git a/src/client/backlogrequester.cpp b/src/client/backlogrequester.cpp index 920e5647..2662dfcc 100644 --- a/src/client/backlogrequester.cpp +++ b/src/client/backlogrequester.cpp @@ -53,6 +53,48 @@ void FixedBacklogRequester::requestBacklog() { setWaitingBuffers(allBuffers); backlogManager->emitMessagesRequested(QObject::tr("Requesting a total of up to %1 backlog messages for %2 buffers").arg(_backlogCount * allBuffers.count()).arg(allBuffers.count())); foreach(BufferId bufferId, allBuffers) { - backlogManager->requestBacklog(bufferId, _backlogCount, -1); + backlogManager->requestBacklog(bufferId, -1, -1, _backlogCount); + } +} + +// ======================================== +// GLOBAL UNREAD BACKLOG REQUESTER +// ======================================== +GlobalUnreadBacklogRequester::GlobalUnreadBacklogRequester(ClientBacklogManager *backlogManager) + : BacklogRequester(false, backlogManager) +{ + BacklogSettings backlogSettings; + _limit = backlogSettings.globalUnreadBacklogLimit(); + _additional = backlogSettings.globalUnreadBacklogAdditional(); +} + +void GlobalUnreadBacklogRequester::requestBacklog() { + MsgId oldestUnreadMessage; + foreach(BufferId bufferId, allBufferIds()) { + MsgId msgId = Client::networkModel()->lastSeenMsgId(bufferId); + if(!oldestUnreadMessage.isValid() || oldestUnreadMessage > msgId) + oldestUnreadMessage = msgId; + } + backlogManager->emitMessagesRequested(QObject::tr("Requesting up to %1 of all unread backlog messages (plus additional %2)").arg(_limit).arg(_additional)); + backlogManager->requestBacklogAll(oldestUnreadMessage, -1, _limit, _additional); +} + +// ======================================== +// PER BUFFER UNREAD BACKLOG REQUESTER +// ======================================== +PerBufferUnreadBacklogRequester::PerBufferUnreadBacklogRequester(ClientBacklogManager *backlogManager) + : BacklogRequester(true, backlogManager) +{ + BacklogSettings backlogSettings; + _limit = backlogSettings.perBufferUnreadBacklogLimit(); + _additional = backlogSettings.perBufferUnreadBacklogAdditional(); +} + +void PerBufferUnreadBacklogRequester::requestBacklog() { + QList allBuffers = allBufferIds(); + setWaitingBuffers(allBuffers); + backlogManager->emitMessagesRequested(QObject::tr("Requesting a total of up to %1 unread backlog messages for %2 buffers").arg((_limit + _additional) * allBuffers.count()).arg(allBuffers.count())); + foreach(BufferId bufferId, allBuffers) { + backlogManager->requestBacklog(bufferId, Client::networkModel()->lastSeenMsgId(bufferId), -1, _limit, _additional); } }