- if(msglist.isEmpty()) return;
-
- int idx = indexForId(msglist.first().msgId());
- beginInsertRows(QModelIndex(), idx, idx+msglist.count()-1);
+ Q_ASSERT(!msglist.isEmpty()); // the msglist can be assumed to be non empty
+// int last = msglist.count() - 1;
+// Q_ASSERT(0 == last || msglist.at(0).msgId() != msglist.at(last).msgId() || msglist.at(last).type() == Message::DayChange);
+ int start = indexForId(msglist.first().msgId());
+ int end = start + msglist.count() - 1;
+ Message dayChangeMsg;
+// MessageModelItem *dayChangeItem = 0;
+ bool relocatedMsg = false;
+ if(start > 0) {
+ // check if the preceeding msg is a daychange message and if so if
+ // we have to drop or relocate it at the end of this chunk
+ int prevIdx = start - 1;
+ if(messageItemAt(prevIdx)->msgType() == Message::DayChange
+ && messageItemAt(prevIdx)->timestamp() > msglist.at(0).timestamp()) {
+ beginRemoveRows(QModelIndex(), prevIdx, prevIdx);
+// MessageModelItem *oldItem = _messageList.takeAt(prevIdx);
+// if(msglist.last().timestamp() < oldItem->timestamp()) {
+// // we have to reinsert it (with changed msgId -> thus we need to recreate it)
+// Message dayChangeMsg = Message::ChangeOfDay(oldItem->timestamp());
+// dayChangeMsg.setMsgId(msglist.last().msgId());
+// dayChangeItem = createMessageModelItem(dayChangeMsg);
+// }
+// delete oldItem;
+
+
+ dayChangeMsg = takeMessageAt(prevIdx);
+ if(msglist.last().timestamp() < dayChangeMsg.timestamp()) {
+ // we have to reinsert it with a changed msgId
+ dayChangeMsg.setMsgId(msglist.last().msgId());
+ }
+ endRemoveRows();
+ start--;
+ end--;
+ relocatedMsg = true;
+ }
+ }