Implement sender realname/avatarurl storage
[quassel.git] / src / common / message.cpp
index 34990c6..061f16e 100644 (file)
 
 #include <QDataStream>
 
-Message::Message(const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, const QString &senderPrefixes, Flags flags)
+Message::Message(const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender,
+                 const QString &senderPrefixes, const QString &realName, const QString &avatarUrl, Flags flags)
     : _timestamp(QDateTime::currentDateTime().toUTC()),
     _bufferInfo(bufferInfo),
     _contents(contents),
     _sender(sender),
     _senderPrefixes(senderPrefixes),
+    _realName(realName),
+    _avatarUrl(avatarUrl),
     _type(type),
     _flags(flags)
 {
 }
 
 
-Message::Message(const QDateTime &ts, const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, const QString &senderPrefixes, Flags flags)
+Message::Message(const QDateTime &ts, const BufferInfo &bufferInfo, Type type, const QString &contents,
+                 const QString &sender, const QString &senderPrefixes, const QString &realName,
+                 const QString &avatarUrl, Flags flags)
     : _timestamp(ts),
     _bufferInfo(bufferInfo),
     _contents(contents),
     _sender(sender),
     _senderPrefixes(senderPrefixes),
+    _realName(realName),
+    _avatarUrl(avatarUrl),
     _type(type),
     _flags(flags)
 {
@@ -72,6 +79,11 @@ QDataStream &operator<<(QDataStream &out, const Message &msg)
     if (SignalProxy::current()->targetPeer()->hasFeature(Quassel::Feature::SenderPrefixes))
         out << msg.senderPrefixes().toUtf8();
 
+    if (SignalProxy::current()->targetPeer()->hasFeature(Quassel::Feature::RichMessages)) {
+        out << msg.realName().toUtf8();
+        out << msg.avatarUrl().toUtf8();
+    }
+
     out << msg.contents().toUtf8();
     return out;
 }
@@ -113,6 +125,15 @@ QDataStream &operator>>(QDataStream &in, Message &msg)
         in >> senderPrefixes;
     msg._senderPrefixes = QString::fromUtf8(senderPrefixes);
 
+    QByteArray realName;
+    QByteArray avatarUrl;
+    if (SignalProxy::current()->sourcePeer()->hasFeature(Quassel::Feature::RichMessages)) {
+        in >> realName;
+        in >> avatarUrl;
+    }
+    msg._realName = QString::fromUtf8(realName);
+    msg._avatarUrl = QString::fromUtf8(avatarUrl);
+
     QByteArray contents;
     in >> contents;
     msg._contents = QString::fromUtf8(contents);
@@ -126,7 +147,9 @@ QDebug operator<<(QDebug dbg, const Message &msg)
     dbg.nospace() << qPrintable(QString("Message(MsgId:")) << msg.msgId()
     << qPrintable(QString(",")) << msg.timestamp()
     << qPrintable(QString(", Type:")) << msg.type()
+    << qPrintable(QString(", RealName:")) << msg.realName()
+    << qPrintable(QString(", AvatarURL:")) << msg.avatarUrl()
     << qPrintable(QString(", Flags:")) << msg.flags() << qPrintable(QString(")"))
-    << msg.sender() << ":" << msg.contents();
+    << msg.senderPrefixes() << msg.sender() << ":" << msg.contents();
     return dbg;
 }