X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.h;h=a945795ec2d3fabffac90627c0667be6bf4c163e;hp=04931f18edd34643c1521cd11f64aa9945396cfb;hb=3a3e844f9fcfd12235a0086af75ecd503b621ef4;hpb=68878dc8366f2f4a0afe132847aad9a51a80cdbf diff --git a/src/qtui/chatitem.h b/src/qtui/chatitem.h index 04931f18..a945795e 100644 --- a/src/qtui/chatitem.h +++ b/src/qtui/chatitem.h @@ -31,6 +31,7 @@ #include "qtui.h" #include +#include class ChatLine; class ChatView; @@ -66,7 +67,7 @@ public: QPointF mapToScene(const QPointF &) const; QPointF mapFromScene(const QPointF &) const; - virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr); virtual inline int type() const { return ChatScene::ChatItemType; } QVariant data(int role) const; @@ -112,7 +113,6 @@ protected: virtual UiStyle::FormatList formatList() const; void paintBackground(QPainter *); - QVector selectionFormats() const; virtual QVector additionalFormats() const; void overlayFormat(UiStyle::FormatList &fmtList, quint16 start, quint16 end, UiStyle::FormatType overlayFmt) const; @@ -124,6 +124,9 @@ protected: inline void setSelectionMode(SelectionMode mode) { _selectionMode = mode; } void setSelection(SelectionMode mode, qint16 selectionStart, qint16 selectionEnd); + virtual bool hasActiveClickable() const; + virtual std::pair activeClickableRange() const; + qint16 posToCursor(const QPointF &pos) const; inline void setGeometry(qreal width, qreal height) { clearCache(); _boundingRect.setSize(QSizeF(width, height)); } @@ -156,8 +159,8 @@ class TimestampChatItem : public ChatItem { public: TimestampChatItem(const QRectF &boundingRect, ChatLine *parent) : ChatItem(boundingRect, parent) {} - virtual inline int type() const { return ChatScene::TimestampChatItemType; } - virtual inline ChatLineModel::ColumnType column() const { return ChatLineModel::TimestampColumn; } + inline int type() const override { return ChatScene::TimestampChatItemType; } + inline ChatLineModel::ColumnType column() const override { return ChatLineModel::TimestampColumn; } }; @@ -169,13 +172,13 @@ class SenderChatItem : public ChatItem { public: SenderChatItem(const QRectF &boundingRect, ChatLine *parent) : ChatItem(boundingRect, parent) {} - virtual inline ChatLineModel::ColumnType column() const { return ChatLineModel::SenderColumn; } - virtual void handleClick(const QPointF &pos, ChatScene::ClickMode clickMode); + inline ChatLineModel::ColumnType column() const override { return ChatLineModel::SenderColumn; } + void handleClick(const QPointF &pos, ChatScene::ClickMode clickMode) override; protected: - virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - virtual inline int type() const { return ChatScene::SenderChatItemType; } - virtual void initLayout(QTextLayout *layout) const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + inline int type() const override { return ChatScene::SenderChatItemType; } + void initLayout(QTextLayout *layout) const override; }; @@ -191,29 +194,30 @@ class ContentsChatItem : public ChatItem public: ContentsChatItem(const QPointF &pos, const qreal &width, ChatLine *parent); - ~ContentsChatItem(); + ~ContentsChatItem() override; - virtual inline int type() const { return ChatScene::ContentsChatItemType; } + inline int type() const override { return ChatScene::ContentsChatItemType; } - inline ChatLineModel::ColumnType column() const { return ChatLineModel::ContentsColumn; } + inline ChatLineModel::ColumnType column() const override { return ChatLineModel::ContentsColumn; } QFontMetricsF *fontMetrics() const; - virtual void clearCache(); + void clearCache() override; protected: - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); - virtual void handleClick(const QPointF &pos, ChatScene::ClickMode clickMode); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override; + void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override; + void handleClick(const QPointF &pos, ChatScene::ClickMode clickMode) override; - virtual void addActionsToMenu(QMenu *menu, const QPointF &itemPos); - virtual void copyLinkToClipboard(); + bool hasActiveClickable() const override; + std::pair activeClickableRange() const override; - virtual QVector additionalFormats() const; + void addActionsToMenu(QMenu *menu, const QPointF &itemPos) override; + virtual void copyLinkToClipboard(); - virtual void initLayout(QTextLayout *layout) const; - virtual void doLayout(QTextLayout *layout) const; - virtual UiStyle::FormatList formatList() const; + void initLayout(QTextLayout *layout) const override; + void doLayout(QTextLayout *layout) const override; + UiStyle::FormatList formatList() const override; private: class ActionProxy; @@ -246,7 +250,7 @@ struct ContentsChatItemPrivate { Clickable currentClickable; Clickable activeClickable; - ContentsChatItemPrivate(const ClickableList &c, ContentsChatItem *parent) : contentsItem(parent), clickables(c) {} + ContentsChatItemPrivate(ClickableList c, ContentsChatItem *parent) : contentsItem(parent), clickables(std::move(c)) {} }; class ContentsChatItem::WrapColumnFinder