Implement the ChatLine element in C++
[quassel.git] / src / qmlui / qmlmessagemodelitem.cpp
index 864790a..561c9b7 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
+#include "qmlchatline.h"
 #include "qmlmessagemodel.h"
 #include "qmlmessagemodelitem.h"
+#include "uistyle.h"
 
 QmlMessageModelItem::QmlMessageModelItem(const Message &msg)
   : MessageModelItem(),
@@ -29,28 +31,19 @@ QmlMessageModelItem::QmlMessageModelItem(const Message &msg)
     _styledMsg.setFlags(msg.flags() |= Message::ServerMsg);
 }
 
-bool QmlMessageModelItem::setData(int column, const QVariant &value, int role) {
-  switch(role) {
-    case MessageModel::FlagsRole:
-      _styledMsg.setFlags((Message::Flags)value.toUInt());
-      return true;
-    default:
-      return MessageModelItem::setData(column, value, role);
-  }
-}
-
 QVariant QmlMessageModelItem::data(int column, int role) const {
   QVariant variant;
   switch(role) {
-  case QmlMessageModel::TimestampRole:
-    variant = _styledMsg.timestamp();
-    break;
-  case QmlMessageModel::SenderRole:
-    variant = _styledMsg.sender();
-    break;
-  case QmlMessageModel::ContentsRole:
-    variant = _styledMsg.contents();
-    break;
+  case QmlMessageModel::ChatLineDataRole: {
+    QmlChatLine::Data data;
+    data.timestamp.text = _styledMsg.decoratedTimestamp();
+    data.timestamp.formats = UiStyle::FormatList() << qMakePair((quint16)0, (quint32)UiStyle::formatType(_styledMsg.type()) | UiStyle::Timestamp);
+    data.sender.text = _styledMsg.decoratedSender();
+    data.sender.formats = UiStyle::FormatList() << qMakePair((quint16)0, (quint32)UiStyle::formatType(_styledMsg.type()) | UiStyle::Sender);
+    data.contents.text = _styledMsg.plainContents();
+    data.contents.formats = _styledMsg.contentsFormatList();
+    return QVariant::fromValue<QmlChatLine::Data>(data);
+  }
   default:
     break;
   }
@@ -58,28 +51,3 @@ QVariant QmlMessageModelItem::data(int column, int role) const {
     return MessageModelItem::data(column, role);
   return variant;
 }
-
-QVariant QmlMessageModelItem::timestampData(int role) const {
-  switch(role) {
-  case MessageModel::DisplayRole:
-    return _styledMsg.timestamp();
-  }
-  return QVariant();
-}
-
-QVariant QmlMessageModelItem::senderData(int role) const {
-  switch(role) {
-  case MessageModel::DisplayRole:
-    return _styledMsg.sender();
-  }
-  return QVariant();
-}
-
-QVariant QmlMessageModelItem::contentsData(int role) const {
-  switch(role) {
-  case MessageModel::DisplayRole:
-    return _styledMsg.contents();
-  }
-  return QVariant();
-}
-