#define CHATSCENE_H_
#include <QAbstractItemModel>
+#include <QClipboard>
#include <QGraphicsItem>
#include <QGraphicsScene>
#include <QSet>
enum ClickMode {
NoClick,
SingleClick,
+ DragStartClick,
DoubleClick,
TripleClick
};
inline QAbstractItemModel *model() const { return _model; }
inline QString idString() const { return _idString; }
- int rowByScenePos(qreal y);
- inline int rowByScenePos(const QPointF &pos) { return rowByScenePos(pos.y()); }
- ChatLineModel::ColumnType columnByScenePos(qreal x);
- inline ChatLineModel::ColumnType columnByScenePos(const QPointF &pos) { return columnByScenePos(pos.x()); }
+ int rowByScenePos(qreal y) const;
+ inline int rowByScenePos(const QPointF &pos) const { return rowByScenePos(pos.y()); }
+ ChatLineModel::ColumnType columnByScenePos(qreal x) const ;
+ inline ChatLineModel::ColumnType columnByScenePos(const QPointF &pos) const { return columnByScenePos(pos.x()); }
ChatView *chatView() const;
ChatItem *chatItemAt(const QPointF &pos) const;
inline void setSenderCutoffMode(CutoffMode mode) { _cutoffMode = mode; }
QString selection() const;
- inline bool hasGlobalSelection() const { return _selectionStart >= 0; }
- inline bool isGloballySelecting() const { return _isSelecting; }
+ bool hasSelection() const;
+ bool hasGlobalSelection() const;
bool isPosOverSelection(const QPointF &) const;
+ bool isGloballySelecting() const;
void initiateDrag(QWidget *source);
bool isScrollingAllowed() const;
void startGlobalSelection(ChatItem *item, const QPointF &itemPos);
void clearGlobalSelection();
void clearSelection();
-
- void putToClipboard(const QString &);
+ void selectionToClipboard(QClipboard::Mode = QClipboard::Clipboard);
+ void stringToClipboard(const QString &str, QClipboard::Mode = QClipboard::Clipboard);
void requestBacklog();
void mouseMoveWhileSelecting(const QPointF &scenePos);
protected:
+ virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
int _firstSelectionRow;
bool _isSelecting;
- bool _showWebPreview;
-
QTimer _clickTimer;
ClickMode _clickMode;
QPointF _clickPos;
bool _clickHandled;
bool _leftButtonPressed;
+ bool _showWebPreview;
+
struct WebPreview {
ChatItem *parentItem;
QGraphicsItem *previewItem;