+void MessageModel::requestBacklog(BufferId bufferId) {
+ if(_messagesWaiting.contains(bufferId))
+ return;
+
+ BacklogSettings backlogSettings;
+ int requestCount = backlogSettings.dynamicBacklogAmount();
+
+ for(int i = 0; i < messageCount(); i++) {
+ if(messageItemAt(i)->bufferId() == bufferId) {
+ _messagesWaiting[bufferId] = requestCount;
+ Client::backlogManager()->emitMessagesRequested(tr("Requesting %1 messages from backlog for buffer %2:%3")
+ .arg(requestCount)
+ .arg(Client::networkModel()->networkName(bufferId))
+ .arg(Client::networkModel()->bufferName(bufferId)));
+ Client::backlogManager()->requestBacklog(bufferId, -1, messageItemAt(i)->msgId(), requestCount);
+ return;
+ }
+ }
+}
+
+void MessageModel::messagesReceived(BufferId bufferId, int count) {
+ if(!_messagesWaiting.contains(bufferId))
+ return;
+
+ _messagesWaiting[bufferId] -= count;
+ if(_messagesWaiting[bufferId] <= 0)
+ _messagesWaiting.remove(bufferId);
+}
+
+void MessageModel::buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2) {
+ for(int i = 0; i < messageCount(); i++) {
+ if(messageItemAt(i)->bufferId() == bufferId2) {
+ messageItemAt(i)->setBufferId(bufferId1);
+ QModelIndex idx = index(i, 0);
+ emit dataChanged(idx, idx);
+ }
+ }
+}
+
+// ========================================
+// MessageModelItem
+// ========================================