- const QAbstractItemModel *model() const;
- ChatLine *chatLine() const;
- ChatScene *chatScene() const;
- ChatView *chatView() const;
- int row() const;
- virtual ChatLineModel::ColumnType column() const = 0;
-
- // The boundingRect() is relative to the parent ChatLine
- inline QRectF boundingRect() const;
- inline qreal width() const;
- inline qreal height() const;
- inline QPointF pos() const;
- inline qreal x() const;
- inline qreal y() const;
-
- QPointF mapToLine(const QPointF &) const;
- QPointF mapFromLine(const QPointF &) const;
- QPointF mapToScene(const QPointF &) const;
- QPointF mapFromScene(const QPointF &) const;
-
- virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
- virtual inline int type() const { return ChatScene::ChatItemType; }
-
- QVariant data(int role) const;
-
- // selection stuff, to be called by the scene
- QString selection() const;
- void clearSelection();
- void setFullSelection();
- void continueSelecting(const QPointF &pos);
- bool hasSelection() const;
- bool isPosOverSelection(const QPointF &pos) const;
-
- QList<QRectF> findWords(const QString &searchWord, Qt::CaseSensitivity caseSensitive);
-
- virtual void addActionsToMenu(QMenu *menu, const QPointF &itemPos);
- virtual void handleClick(const QPointF &pos, ChatScene::ClickMode);
-
- void initLayoutHelper(QTextLayout *layout, QTextOption::WrapMode, Qt::Alignment = Qt::AlignLeft) const;
-
- //! Remove internally cached data
- /** This removes e.g. the cached QTextLayout to avoid wasting space for nonvisible ChatLines
- */
- virtual void clearCache();
+ const QAbstractItemModel *model() const;
+ ChatLine *chatLine() const;
+ ChatScene *chatScene() const;
+ ChatView *chatView() const;
+ int row() const;
+ virtual ChatLineModel::ColumnType column() const = 0;
+
+ // The boundingRect() is relative to the parent ChatLine
+ inline QRectF boundingRect() const;
+ inline qreal width() const;
+ inline qreal height() const;
+ inline QPointF pos() const;
+ inline qreal x() const;
+ inline qreal y() const;
+
+ QPointF mapToLine(const QPointF &) const;
+ QPointF mapFromLine(const QPointF &) const;
+ QPointF mapToScene(const QPointF &) const;
+ QPointF mapFromScene(const QPointF &) const;
+
+ virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+ virtual inline int type() const { return ChatScene::ChatItemType; }
+
+ QVariant data(int role) const;
+
+ // selection stuff, to be called by the scene
+ QString selection() const;
+ void clearSelection();
+ void setFullSelection();
+ void continueSelecting(const QPointF &pos);
+ bool hasSelection() const;
+ bool isPosOverSelection(const QPointF &pos) const;
+
+ QList<QRectF> findWords(const QString &searchWord, Qt::CaseSensitivity caseSensitive);
+
+ virtual void addActionsToMenu(QMenu *menu, const QPointF &itemPos);
+ virtual void handleClick(const QPointF &pos, ChatScene::ClickMode);
+
+ void initLayoutHelper(QTextLayout *layout, QTextOption::WrapMode, Qt::Alignment = Qt::AlignLeft) const;
+
+ //! Remove internally cached data
+ /** This removes e.g. the cached QTextLayout to avoid wasting space for nonvisible ChatLines
+ */
+ virtual void clearCache();
- enum SelectionMode {
- NoSelection,
- PartialSelection,
- FullSelection
- };
-
- 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 *) {};
-
- 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 doLayout(QTextLayout *) const;
- virtual UiStyle::FormatList formatList() const;
-
- void paintBackground(QPainter *);
- QVector<QTextLayout::FormatRange> selectionFormats() const;
- virtual QVector<QTextLayout::FormatRange> additionalFormats() const;
- void overlayFormat(UiStyle::FormatList &fmtList, int start, int end, quint32 overlayFmt) const;
-
- inline qint16 selectionStart() const { return _selectionStart; }
- inline void setSelectionStart(qint16 start) { _selectionStart = start; }
- inline qint16 selectionEnd() const { return _selectionEnd; }
- inline void setSelectionEnd(qint16 end) { _selectionEnd = end; }
- inline SelectionMode selectionMode() const { return _selectionMode; }
- inline void setSelectionMode(SelectionMode mode) { _selectionMode = mode; }
- void setSelection(SelectionMode mode, qint16 selectionStart, qint16 selectionEnd);
-
- 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 setPos(const QPointF &pos) { _boundingRect.moveTopLeft(pos); }
+ enum SelectionMode {
+ NoSelection,
+ PartialSelection,
+ FullSelection
+ };
+
+ 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 *) {}
+
+ QTextLayout *layout() const;
+
+ virtual void initLayout(QTextLayout *layout) const;
+ virtual void doLayout(QTextLayout *) const;
+ virtual UiStyle::FormatList formatList() const;
+
+ void paintBackground(QPainter *);
+ QVector<QTextLayout::FormatRange> selectionFormats() const;
+ virtual QVector<QTextLayout::FormatRange> additionalFormats() const;
+ void overlayFormat(UiStyle::FormatList &fmtList, int start, int end, quint32 overlayFmt) const;
+
+ inline qint16 selectionStart() const { return _selectionStart; }
+ inline void setSelectionStart(qint16 start) { _selectionStart = start; }
+ inline qint16 selectionEnd() const { return _selectionEnd; }
+ inline void setSelectionEnd(qint16 end) { _selectionEnd = end; }
+ inline SelectionMode selectionMode() const { return _selectionMode; }
+ inline void setSelectionMode(SelectionMode mode) { _selectionMode = mode; }
+ void setSelection(SelectionMode mode, qint16 selectionStart, qint16 selectionEnd);
+
+ qint16 posToCursor(const QPointF &pos) const;
+
+ 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); }
- /// Returns the ContentsChatItem that should receive the action event.
- /** For efficiency reasons, values are not checked for validity. You gotta make sure that you set the data() member
- * in the Action correctly.
- * @return The ChatItem from which the sending Action originated
- */
- inline ContentsChatItem *item() const {
- return static_cast<ContentsChatItem *>(qobject_cast<QAction *>(sender())->data().value<void *>());
- }
+ /// Returns the ContentsChatItem that should receive the action event.
+ /** For efficiency reasons, values are not checked for validity. You gotta make sure that you set the data() member
+ * in the Action correctly.
+ * @return The ChatItem from which the sending Action originated
+ */
+ inline ContentsChatItem *item() const
+ {
+ return static_cast<ContentsChatItem *>(qobject_cast<QAction *>(sender())->data().value<void *>());
+ }