+ QString selection() const;
+ bool hasSelection() const;
+ bool hasGlobalSelection() const;
+ bool isPosOverSelection(const QPointF &) const;
+ bool isGloballySelecting() const;
+ void initiateDrag(QWidget *source);
+
+ bool isScrollingAllowed() const;
+
+public slots:
+ void updateForViewport(qreal width, qreal height);
+ void setWidth(qreal width);
+ void layout(int start, int end, qreal width);
+
+ void resetColumnWidths();
+
+ void setMarkerLineVisible(bool visible = true);
+ void setMarkerLine(MsgId msgId = MsgId());
+ void jumpToMarkerLine(bool requestBacklog);
+
+ // these are used by the chatitems to notify the scene and manage selections
+ void setSelectingItem(ChatItem *item);
+ ChatItem *selectingItem() const { return _selectingItem; }
+ void startGlobalSelection(ChatItem *item, const QPointF &itemPos);
+ void clearGlobalSelection();
+ void clearSelection();
+ void selectionToClipboard(QClipboard::Mode = QClipboard::Clipboard);
+ void stringToClipboard(const QString &str, QClipboard::Mode = QClipboard::Clipboard);
+
+ void webSearchOnSelection();
+
+ void requestBacklog();
+
+#ifdef HAVE_WEBKIT
+ void loadWebPreview(ChatItem *parentItem, const QUrl &url, const QRectF &urlRect);
+ void clearWebPreview(ChatItem *parentItem = 0);
+#endif
+
+signals:
+ void lastLineChanged(QGraphicsItem *item, qreal offset);
+ void layoutChanged(); // indicates changes to the scenerect due to resizing of the contentsitems
+ 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);
+ virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent);
+ virtual void handleClick(Qt::MouseButton button, const QPointF &scenePos);
+
+protected slots:
+ void rowsInserted(const QModelIndex &, int, int);
+ void rowsAboutToBeRemoved(const QModelIndex &, int, int);
+ void dataChanged(const QModelIndex &, const QModelIndex &);
+
+private slots:
+ void firstHandlePositionChanged(qreal xpos);
+ void secondHandlePositionChanged(qreal xpos);
+#ifdef HAVE_WEBKIT
+ void webPreviewNextStep();
+#endif
+ void showWebPreviewChanged();
+
+ void rowsRemoved();
+
+ void clickTimeout();
+
+private:
+ void setHandleXLimits();
+ void updateSelection(const QPointF &pos);
+
+ ChatView *_chatView;
+ QString _idString;
+ QAbstractItemModel *_model;