introducing query merging (per drag & drop). needs a core update
[quassel.git] / src / client / messagemodel.cpp
index 13e6900..945ac7d 100644 (file)
@@ -370,7 +370,7 @@ void MessageModel::requestBacklog(BufferId bufferId) {
                                                      .arg(requestCount)
                                                      .arg(Client::networkModel()->networkName(bufferId))
                                                      .arg(Client::networkModel()->bufferName(bufferId)));
-      Client::backlogManager()->requestBacklog(bufferId, requestCount, _messageList.at(i)->msgId().toInt());
+      Client::backlogManager()->requestBacklog(bufferId, -1, _messageList.at(i)->msgId(), requestCount);
       return;
     }
   }
@@ -385,6 +385,16 @@ void MessageModel::messagesReceived(BufferId bufferId, int count) {
     _messagesWaiting.remove(bufferId);
 }
 
+void MessageModel::buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2) {
+  for(int i = 0; i < _messageList.count(); i++) {
+    if(_messageList[i]->bufferId() == bufferId2) {
+      _messageList[i]->setBufferId(bufferId1);
+      QModelIndex idx = index(i, 0);
+      emit dataChanged(idx, idx);
+    }
+  }
+}
+
 // ========================================
 //  MessageModelItem
 // ========================================
@@ -395,6 +405,8 @@ MessageModelItem::MessageModelItem(const Message &msg) :
   _type(msg.type()),
   _flags(msg.flags())
 {
+  if(!msg.sender().contains('!'))
+    _flags |= Message::ServerMsg;
 }
 
 QVariant MessageModelItem::data(int column, int role) const {
@@ -407,10 +419,22 @@ QVariant MessageModelItem::data(int column, int role) const {
   case MessageModel::TypeRole: return _type;
   case MessageModel::FlagsRole: return (int)_flags;
   case MessageModel::TimestampRole: return _timestamp;
+  case MessageModel::RedirectedToRole: return qVariantFromValue<BufferId>(_redirectedTo);
   default: return QVariant();
   }
 }
 
+bool MessageModelItem::setData(int column, const QVariant &value, int role) {
+  Q_UNUSED(column);
+
+  switch(role) {
+  case MessageModel::RedirectedToRole:
+    _redirectedTo = value.value<BufferId>();
+    return true;
+  default:
+    return false;
+  }
+}
 
 // Stuff for later
 bool MessageModelItem::lessThan(const MessageModelItem *m1, const MessageModelItem *m2){