-ChatLine::ChatLine(const QModelIndex &index, QGraphicsItem *parent) : QGraphicsItem(parent) {
- _timestampItem = new ChatItem(QPersistentModelIndex(index.sibling(index.row(), ChatLineModel::TimestampColumn)), this);
- _senderItem = new ChatItem(QPersistentModelIndex(index.sibling(index.row(), ChatLineModel::SenderColumn)), this);
- _contentsItem = new ChatItem(QPersistentModelIndex(index.sibling(index.row(), ChatLineModel::ContentsColumn)), this);
-
- _timestampItem->setPos(0,0);
- _width = _height = 0;
- _selection = 0;
-
- if(_contentsItem->data(MessageModel::FlagsRole).toInt() & Message::Highlight) setHighlighted(true);
-}
-
-ChatLine::~ChatLine() {
- delete _timestampItem;
- delete _senderItem;
- delete _contentsItem;
+ChatLine::ChatLine(int row, QAbstractItemModel *model, QGraphicsItem *parent)
+ : QGraphicsItem(parent),
+ _row(row), // needs to be set before the items
+ _timestampItem(ChatLineModel::TimestampColumn, model, this),
+ _senderItem(ChatLineModel::SenderColumn, model, this),
+ _contentsItem(ChatLineModel::ContentsColumn, model, this),
+ _width(0),
+ _height(0),
+ _selection(0)
+{
+ Q_ASSERT(model);
+ QModelIndex index = model->index(row, ChatLineModel::ContentsColumn);
+ setHighlighted(model->data(index, MessageModel::FlagsRole).toInt() & Message::Highlight);