X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fmessagemodel.cpp;h=0cc31a181f4953737a52614337422860d468601f;hp=07af7aca10feb92288ca8f1e7708f4d29cf20200;hb=4ae8f86c1ce452582d6fe576956c7c1bc1460adf;hpb=d641909f556da373ede15b257898ddc183e0954b diff --git a/src/client/messagemodel.cpp b/src/client/messagemodel.cpp index 07af7aca..0cc31a18 100644 --- a/src/client/messagemodel.cpp +++ b/src/client/messagemodel.cpp @@ -219,7 +219,7 @@ int MessageModel::insertMessagesGracefully(const QList &msglist) { while(iter != msglist.constBegin()) { iter--; - if(!fastForward && (*iter).msgId() < minId) + if(!fastForward && (*iter).msgId() <= minId) break; processedMsgs++; @@ -250,7 +250,7 @@ int MessageModel::insertMessagesGracefully(const QList &msglist) { } } else { while(iter != msglist.constEnd()) { - if(!fastForward && (*iter).msgId() < minId) + if(!fastForward && (*iter).msgId() <= minId) break; processedMsgs++; @@ -307,10 +307,12 @@ void MessageModel::customEvent(QEvent *event) { } void MessageModel::clear() { - beginRemoveRows(QModelIndex(), 0, rowCount() - 1); - removeAllMessages(); - endRemoveRows(); _messagesWaiting.clear(); + if (rowCount() > 0) { + beginRemoveRows(QModelIndex(), 0, rowCount() - 1); + removeAllMessages(); + endRemoveRows(); + } } // returns index of msg with given Id or of the next message after that (i.e., the index where we'd insert this msg) @@ -348,6 +350,18 @@ void MessageModel::changeOfDay() { _nextDayChange = _nextDayChange.addSecs(86400); } +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; @@ -373,8 +387,10 @@ void MessageModel::messagesReceived(BufferId bufferId, int count) { return; _messagesWaiting[bufferId] -= count; - if(_messagesWaiting[bufferId] <= 0) + if(_messagesWaiting[bufferId] <= 0) { _messagesWaiting.remove(bufferId); + emit finishedBacklogFetch(bufferId); + } } void MessageModel::buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2) { @@ -395,13 +411,14 @@ QVariant MessageModelItem::data(int column, int role) const { return QVariant(); switch(role) { - case MessageModel::MsgIdRole: return QVariant::fromValue(msgId()); - case MessageModel::BufferIdRole: return QVariant::fromValue(bufferId()); - case MessageModel::TypeRole: return msgType(); - case MessageModel::FlagsRole: return (int)msgFlags(); - case MessageModel::TimestampRole: return timestamp(); - case MessageModel::RedirectedToRole: return qVariantFromValue(_redirectedTo); - default: return QVariant(); + case MessageModel::MessageRole: return QVariant::fromValue(message()); + case MessageModel::MsgIdRole: return QVariant::fromValue(msgId()); + case MessageModel::BufferIdRole: return QVariant::fromValue(bufferId()); + case MessageModel::TypeRole: return msgType(); + case MessageModel::FlagsRole: return (int)msgFlags(); + case MessageModel::TimestampRole: return timestamp(); + case MessageModel::RedirectedToRole: return qVariantFromValue(_redirectedTo); + default: return QVariant(); } }