webPreview.delayTimer.setSingleShot(true);
connect(&webPreview.delayTimer, SIGNAL(timeout()), this, SLOT(showWebPreview()));
-
- // installEventFilter(this);
- setItemIndexMethod(QGraphicsScene::NoIndex);
+ webPreview.deleteTimer.setInterval(600000);
+ connect(&webPreview.deleteTimer, SIGNAL(timeout()), this, SLOT(deleteWebPreview()));
}
ChatScene::~ChatScene() {
if(webPreview.url != url) {
webPreview.url = url;
// load a new web view and delete the old one (if exists)
- if(webPreview.previewItem) {
+ if(webPreview.previewItem && webPreview.previewItem->scene()) {
removeItem(webPreview.previewItem);
delete webPreview.previewItem;
}
webPreview.previewItem = new WebPreviewItem(url);
webPreview.delayTimer.start(2000);
+ webPreview.deleteTimer.stop();
+ } else if(webPreview.previewItem && !webPreview.previewItem->scene()) {
+ // we just have to readd the item to the scene
+ webPreview.delayTimer.start(2000);
+ webPreview.deleteTimer.stop();
}
if(webPreview.urlRect != urlRect) {
webPreview.urlRect = urlRect;
void ChatScene::clearWebPreviewEvent(ClearWebPreviewEvent *event) {
#ifdef HAVE_WEBKIT
event->accept();
+ if(webPreview.previewItem && webPreview.previewItem->scene()) {
+ removeItem(webPreview.previewItem);
+ webPreview.deleteTimer.start();
+ }
+ webPreview.delayTimer.stop();
+#endif
+}
+
+void ChatScene::deleteWebPreview() {
if(webPreview.previewItem) {
- if(webPreview.previewItem->scene()) {
- removeItem(webPreview.previewItem);
- }
delete webPreview.previewItem;
webPreview.previewItem = 0;
}
webPreview.parentItem = 0;
webPreview.url = QString();
webPreview.urlRect = QRectF();
-#endif
}
-
-bool ChatScene::eventFilter(QObject *watched, QEvent *event) {
- qDebug() << watched << event;
- return false;
-}
-
inline ColumnHandleItem *firstColumnHandle() const { return firstColHandle; }
inline ColumnHandleItem *secondColumnHandle() const { return secondColHandle; }
- virtual bool eventFilter(QObject *watched, QEvent *event);
-
public slots:
void updateForViewport(qreal width, qreal height);
void setWidth(qreal, bool forceReposition = false);
void handlePositionChanged(qreal xpos);
void showWebPreview();
void clearWebPreviewEvent(ClearWebPreviewEvent *event);
+ void deleteWebPreview();
private:
void setHandleXLimits();
struct WebPreview {
ChatItem *parentItem;
- WebPreviewItem *previewItem;
+ QGraphicsItem *previewItem;
QString url;
QRectF urlRect;
QTimer delayTimer;
+ QTimer deleteTimer;
WebPreview() : parentItem(0), previewItem(0) {}
};
WebPreview webPreview;
painter->setBrush(Qt::black);
painter->setRenderHints(QPainter::Antialiasing);
painter->drawRoundedRect(boundingRect(), 10, 10);
-
- painter->setPen(QPen(Qt::green));
- QString text = QString::number(zValue());
- painter->drawText(_boundingRect.center(), text);
}
#endif //#ifdef HAVE_WEBKIT