Impelementing proper message redirection.
[quassel.git] / src / client / messagemodel.cpp
index 13e6900..8dfaf01 100644 (file)
@@ -395,6 +395,8 @@ MessageModelItem::MessageModelItem(const Message &msg) :
   _type(msg.type()),
   _flags(msg.flags())
 {
   _type(msg.type()),
   _flags(msg.flags())
 {
+  if(!msg.sender().contains('!'))
+    _flags |= Message::ServerMsg;
 }
 
 QVariant MessageModelItem::data(int column, int role) const {
 }
 
 QVariant MessageModelItem::data(int column, int role) const {
@@ -407,10 +409,23 @@ 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::TypeRole: return _type;
   case MessageModel::FlagsRole: return (int)_flags;
   case MessageModel::TimestampRole: return _timestamp;
+  case MessageModel::RedirectedToRole: return qVariantFromValue<BufferId>(_redirectedTo);
   default: return QVariant();
   }
 }
 
   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){
 
 // Stuff for later
 bool MessageModelItem::lessThan(const MessageModelItem *m1, const MessageModelItem *m2){