/***************************************************************************
- * Copyright (C) 2005-2016 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 *
#include "qtui.h"
#include <QTextLayout>
+#include <utility>
class ChatLine;
class ChatView;
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;
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;
+ 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; }
inline void setSelectionMode(SelectionMode mode) { _selectionMode = mode; }
void setSelection(SelectionMode mode, qint16 selectionStart, qint16 selectionEnd);
+ virtual bool hasActiveClickable() const;
+ virtual std::pair<quint16, quint16> activeClickableRange() const;
+
qint16 posToCursor(const QPointF &pos) const;
inline void setGeometry(qreal width, qreal height) { clearCache(); _boundingRect.setSize(QSizeF(width, height)); }
{
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; }
};
{
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;
};
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<quint16, quint16> activeClickableRange() const override;
- virtual QVector<QTextLayout::FormatRange> 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;
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
{
public:
WrapColumnFinder(const ChatItem *parent);
- ~WrapColumnFinder();
qint16 nextWrapColumn(qreal width);