_cachedLayout = 0;
}
-void ChatItem::initLayout(QTextLayout *layout, QTextOption::WrapMode mode, Qt::Alignment alignment) const {
- initLayoutHelper(layout, mode, alignment);
- doLayout(layout);
-}
-
void ChatItem::initLayoutHelper(QTextLayout *layout, QTextOption::WrapMode wrapMode, Qt::Alignment alignment) const {
Q_ASSERT(layout);
layout->setAdditionalFormats(formatRanges);
}
+void ChatItem::initLayout(QTextLayout *layout) const {
+ initLayoutHelper(layout, QTextOption::NoWrap);
+ doLayout(layout);
+}
+
void ChatItem::doLayout(QTextLayout *layout) const {
layout->beginLayout();
QTextLine line = layout->createLine();
// SenderChatItem
// ************************************************************
+void SenderChatItem::initLayout(QTextLayout *layout) const {
+ initLayoutHelper(layout, QTextOption::ManualWrap, Qt::AlignRight);
+ doLayout(layout);
+}
+
void SenderChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
Q_UNUSED(option); Q_UNUSED(widget);
painter->save();
return h;
}
+void ContentsChatItem::initLayout(QTextLayout *layout) const {
+ initLayoutHelper(layout, QTextOption::WrapAtWordBoundaryOrAnywhere);
+ doLayout(layout);
+}
+
void ContentsChatItem::doLayout(QTextLayout *layout) const {
ChatLineModel::WrapList wrapList = data(ChatLineModel::WrapListRole).value<ChatLineModel::WrapList>();
if(!wrapList.count()) return; // empty chatitem
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
- virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *) {};
- virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *) {};
- virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *) {};
+ virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *) {}
+ virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *) {}
+ virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *) {}
QTextLayout *layout() const;
- virtual inline void initLayout(QTextLayout *layout) const { initLayout(layout, QTextOption::NoWrap); }
- virtual void initLayout(QTextLayout *layout, QTextOption::WrapMode, Qt::Alignment alignment = Qt::AlignLeft) const;
+
+ virtual void initLayout(QTextLayout *layout) const;
virtual void doLayout(QTextLayout *) const;
virtual UiStyle::FormatList formatList() const;
qint16 posToCursor(const QPointF &pos) const;
- inline void setGeometry(qreal width, qreal height) { _boundingRect.setSize(QSizeF(width, height)); }
- inline void setHeight(const qreal &height) { _boundingRect.setHeight(height); }
- inline void setWidth(const qreal &width) { _boundingRect.setWidth(width); }
+ inline void setGeometry(qreal width, qreal height) { clearCache(); _boundingRect.setSize(QSizeF(width, height)); }
+ inline void setHeight(const qreal &height) { clearCache(); _boundingRect.setHeight(height); }
+ inline void setWidth(const qreal &width) { clearCache(); _boundingRect.setWidth(width); }
inline void setPos(const QPointF &pos) { _boundingRect.moveTopLeft(pos); }
private:
protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
virtual inline int type() const { return ChatScene::SenderChatItemType; }
- virtual inline void initLayout(QTextLayout *layout) const { ChatItem::initLayout(layout, QTextOption::ManualWrap, Qt::AlignRight); }
+ virtual void initLayout(QTextLayout *layout) const;
};
// ************************************************************
virtual QVector<QTextLayout::FormatRange> additionalFormats() const;
- virtual inline void initLayout(QTextLayout *layout) const { ChatItem::initLayout(layout, QTextOption::WrapAtWordBoundaryOrAnywhere); }
+ virtual void initLayout(QTextLayout *layout) const;
virtual void doLayout(QTextLayout *layout) const;
virtual UiStyle::FormatList formatList() const;