+ int idx = indexForId(id);
+ if(!fakeMsg && idx < _messageList.count()) { // check for duplicate
+ if(_messageList[idx]->msgId() == id)
+ return false;
+ }
+
+ MessageModelItem *item = createMessageModelItem(msg);
+ beginInsertRows(QModelIndex(), idx, idx);
+ _messageList.insert(idx, item);
+ endInsertRows();
+ return true;
+}
+
+void MessageModel::insertMessages(const QList<Message> &msglist) {
+ if(msglist.isEmpty()) return;
+ // FIXME make this more efficient by grouping msgs
+ foreach(Message msg, msglist)
+ insertMessage(msg);
+}
+
+void MessageModel::clear() {
+ beginRemoveRows(QModelIndex(), 0, rowCount() - 1);
+ qDeleteAll(_messageList);
+ _messageList.clear();
+ endRemoveRows();