Q_OBJECT
public:
+ enum MyEventTypes {
+ ClearWebPreviewEventType = QEvent::User
+ };
+ class ClearWebPreviewEvent;
+
ChatScene(QAbstractItemModel *model, const QString &idString, qreal width, QObject *parent);
virtual ~ChatScene();
void clearWebPreview(ChatItem *parentItem = 0);
signals:
- void lastLineChanged(QGraphicsItem *);
+ void lastLineChanged(QGraphicsItem *item, qreal offset);
protected:
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
+ virtual void customEvent(QEvent *event);
protected slots:
void rowsInserted(const QModelIndex &, int, int);
private slots:
void handlePositionChanged(qreal xpos);
+ void showWebPreview();
+ void clearWebPreviewEvent(ClearWebPreviewEvent *event);
+ void deleteWebPreview();
private:
void setHandleXLimits();
// calls to QChatScene::sceneRect() are very expensive. As we manage the scenerect ourselves
// we store the size in a member variable.
QRectF _sceneRect;
+ int _firstLineRow; // the first row to display (aka: not a daychange msg)
void updateSceneRect();
void updateSceneRect(qreal width);
void updateSceneRect(const QRectF &rect);
struct WebPreview {
ChatItem *parentItem;
- WebPreviewItem *previewItem;
+ QGraphicsItem *previewItem;
QString url;
QRectF urlRect;
+ QTimer delayTimer;
+ QTimer deleteTimer;
WebPreview() : parentItem(0), previewItem(0) {}
};
WebPreview webPreview;