-MessageModelItem::MessageModelItem(const Message &msg) :
- _timestamp(msg.timestamp()),
- _msgId(msg.msgId()),
- _bufferId(msg.bufferInfo().bufferId()),
- _type(msg.type()),
- _flags(msg.flags())
-{
+void MessageModel::insertErrorMessage(BufferInfo bufferInfo, const QString &errorString) {
+ int idx = messageCount();
+ beginInsertRows(QModelIndex(), idx, idx);
+ Message msg(bufferInfo, Message::Error, errorString);
+ if(!messagesIsEmpty())
+ msg.setMsgId(messageItemAt(idx-1)->msgId());
+ else
+ msg.setMsgId(0);
+ insertMessage__(idx, msg);
+ endInsertRows();
+}
+
+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;
+ }
+ }