+void MessageModel::changeOfDay() {
+ _dayChangeTimer.setInterval(86400000);
+ if(!_messageList.isEmpty()) {
+ int idx = _messageList.count();
+ while(idx > 0 && _messageList[idx - 1]->timeStamp() > _nextDayChange) {
+ idx--;
+ }
+ beginInsertRows(QModelIndex(), idx, idx);
+ Message dayChangeMsg = Message::ChangeOfDay(_nextDayChange);
+ dayChangeMsg.setMsgId(_messageList[idx - 1]->msgId());
+ _messageList.insert(idx, createMessageModelItem(dayChangeMsg));
+ endInsertRows();
+ }
+ _nextDayChange = _nextDayChange.addSecs(86400);
+}
+
+void MessageModel::requestBacklog(BufferId bufferId) {
+ if(_messagesWaiting.contains(bufferId))
+ return;
+
+ BacklogSettings backlogSettings;
+ int requestCount = backlogSettings.dynamicBacklogAmount();
+
+ for(int i = 0; i < _messageList.count(); i++) {
+ if(_messageList.at(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, _messageList.at(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);
+}