+void MessageModel::customEvent(QEvent *event) {
+ if(event->type() != QEvent::User)
+ return;
+
+ event->accept();
+
+ if(_messageBuffer.isEmpty())
+ return;
+
+ int processedMsgs = insertMessagesGracefully(_messageBuffer);
+ int remainingMsgs = _messageBuffer.count() - processedMsgs;
+
+ QList<Message>::iterator removeStart = _messageBuffer.begin() + remainingMsgs;
+ QList<Message>::iterator removeEnd = _messageBuffer.end();
+ _messageBuffer.erase(removeStart, removeEnd);
+
+ if(!_messageBuffer.isEmpty())
+ QCoreApplication::postEvent(this, new ProcessBufferEvent());
+}