+
+ ChatLineModel::WrapList _wrapList;
+ Message *_msgBuffer;
+ ChatLinePart *timestamp, *sender, *contents;
+
+ static unsigned char *TextBoundaryFinderBuffer;
+ static int TextBoundaryFinderBufferSize;
+};
+
+unsigned char *ChatLineModelItemPrivate::TextBoundaryFinderBuffer = (unsigned char *)malloc(512 * sizeof(HB_CharAttributes_Dummy));
+int ChatLineModelItemPrivate::TextBoundaryFinderBufferSize = 512 * (sizeof(HB_CharAttributes_Dummy) / sizeof(unsigned char));
+
+
+// ****************************************
+// the actual ChatLineModelItem
+// ****************************************
+ChatLineModelItem::ChatLineModelItem(const Message &msg)
+ : MessageModelItem(msg),
+ _data(new ChatLineModelItemPrivate(msg))
+{
+}
+
+ChatLineModelItem::~ChatLineModelItem() {
+ delete _data;
+}
+
+QVariant ChatLineModelItem::data(int column, int role) const {
+ if(column < ChatLineModel::TimestampColumn || column > ChatLineModel::ContentsColumn)
+ return MessageModelItem::data(column, role);
+ MessageModel::ColumnType columnType = (MessageModel::ColumnType)column;
+
+ switch(role) {
+ case ChatLineModel::DisplayRole:
+ return _data->plainText(columnType);
+ case ChatLineModel::FormatRole:
+ return QVariant::fromValue<UiStyle::FormatList>(_data->formatList(columnType));
+ case ChatLineModel::WrapListRole:
+ if(columnType != ChatLineModel::ContentsColumn)
+ return QVariant();
+ return QVariant::fromValue<ChatLineModel::WrapList>(_data->wrapList());
+ }
+ return MessageModelItem::data(column, role);