Switch some dirty hacking to using real infrastructure. A Chatline now contains three...
[quassel.git] / src / qtui / chatlinemodelitem.cpp
index dbd5e93..4e1eb47 100644 (file)
 #include "uistyle.h"
 
 ChatlineModelItem::ChatlineModelItem(const Message &msg) : MessageModelItem(msg) {
-  _msg = QtUi::style()->styleMessage(msg);
+  QtUiStyle::StyledMessage m = QtUi::style()->styleMessage(msg);
+
+  _timestamp.plainText = m.timestamp.plainText;
+  _sender.plainText = m.sender.plainText;
+  _contents.plainText = m.contents.plainText;
+
+  _timestamp.formatList = m.timestamp.formatList;
+  _sender.formatList = m.sender.formatList;
+  _contents.formatList = m.contents.formatList;
 
 }
 
 
 QVariant ChatlineModelItem::data(int column, int role) const {
+  const ChatlinePart *part;
+
+  switch(column) {
+    case ChatlineModel::TimestampColumn: part = &_timestamp; break;
+    case ChatlineModel::SenderColumn:    part = &_sender; break;
+    case ChatlineModel::ContentsColumn:      part = &_contents; break;
+    default: return MessageModelItem::data(column, role);
+  }
+
   switch(role) {
-    case ChatlineModel::DisplayRole:
-      switch(column) {
-        case ChatlineModel::TimestampColumn: return _msg.timestamp.text;
-        case ChatlineModel::SenderColumn:    return _msg.sender.text;
-        case ChatlineModel::TextColumn:      return _msg.text.text;
-      }
-      break;
-    case ChatlineModel::FormatRole:
-      switch(column) {
-        case ChatlineModel::TimestampColumn: return QVariant::fromValue<UiStyle::FormatList>(_msg.timestamp.formats);
-        case ChatlineModel::SenderColumn:    return QVariant::fromValue<UiStyle::FormatList>(_msg.sender.formats);
-        case ChatlineModel::TextColumn:      return QVariant::fromValue<UiStyle::FormatList>(_msg.text.formats);
-      }
-      break;
+    case ChatlineModel::DisplayRole: return part->plainText;
+    case ChatlineModel::FormatRole:  return QVariant::fromValue<UiStyle::FormatList>(part->formatList);
   }
+
   return MessageModelItem::data(column, role);
 }