X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.h;h=41937fc6dc36c860104e811683c7ad9fa701b510;hb=80950b87640acfb2a75902f8aabf3419da094bf4;hp=7b9d65126255404a0539cb9b8e92906e46630847;hpb=694f9bfbf7f1af19108461c7e00d133e55082bce;p=quassel.git diff --git a/src/qtui/chatitem.h b/src/qtui/chatitem.h index 7b9d6512..41937fc6 100644 --- a/src/qtui/chatitem.h +++ b/src/qtui/chatitem.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CHATITEM_H_ @@ -66,7 +66,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,9 +112,8 @@ protected: virtual UiStyle::FormatList formatList() const; void paintBackground(QPainter *); - QVector selectionFormats() const; virtual QVector additionalFormats() const; - void overlayFormat(UiStyle::FormatList &fmtList, int start, int end, quint32 overlayFmt) const; + void overlayFormat(UiStyle::FormatList &fmtList, quint16 start, quint16 end, UiStyle::FormatType overlayFmt) const; inline qint16 selectionStart() const { return _selectionStart; } inline void setSelectionStart(qint16 start) { _selectionStart = start; } @@ -124,6 +123,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 +158,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 +171,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 +193,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;