Also switches argument of WebPreviewItem() and friends from QString to QUrl to make sure the caller takes care of the appropriate string conversion.
Test case: http://de.wikipedia.org/wiki/München http://de.wikipedia.org/wiki/M%C3%BCnchen
QPointF topLeft = scenePos() + QPointF(x, y);
QRectF urlRect = QRectF(topLeft.x(), topLeft.y(), width, height);
- QString url = data(ChatLineModel::DisplayRole).toString().mid(click.start(), click.length());
- if(!url.contains("://"))
- url = "http://" + url;
+ QString urlstr = data(ChatLineModel::DisplayRole).toString().mid(click.start(), click.length());
+ if(!urlstr.contains("://"))
+ urlstr= "http://" + urlstr;
+ QUrl url = QUrl::fromEncoded(urlstr.toUtf8(), QUrl::TolerantMode);
chatScene()->loadWebPreview(this, url, urlRect);
#endif
}
// Webkit Only stuff
// ========================================
#ifdef HAVE_WEBKIT
-void ChatScene::loadWebPreview(ChatItem *parentItem, const QString &url, const QRectF &urlRect) {
+void ChatScene::loadWebPreview(ChatItem *parentItem, const QUrl &url, const QRectF &urlRect) {
if(!_showWebPreview)
return;
webPreview.previewItem = 0;
}
webPreview.parentItem = 0;
- webPreview.url = QString();
+ webPreview.url = QUrl();
webPreview.urlRect = QRectF();
webPreview.previewState = WebPreview::NoPreview;
}
void requestBacklog();
#ifdef HAVE_WEBKIT
- void loadWebPreview(ChatItem *parentItem, const QString &url, const QRectF &urlRect);
+ void loadWebPreview(ChatItem *parentItem, const QUrl &url, const QRectF &urlRect);
void clearWebPreview(ChatItem *parentItem = 0);
#endif
};
ChatItem *parentItem;
QGraphicsItem *previewItem;
- QString url;
+ QUrl url;
QRectF urlRect;
PreviewState previewState;
QTimer timer;
#include <QPainter>
#include <QWebView>
-WebPreviewItem::WebPreviewItem(const QString &url)
+WebPreviewItem::WebPreviewItem(const QUrl &url)
: QGraphicsItem(0), // needs to be a top level item as we otherwise cannot guarantee that it's on top of other chatlines
_boundingRect(0, 0, 400, 300)
{
class WebPreviewItem : public QGraphicsItem {
public:
- WebPreviewItem(const QString &url);
+ WebPreviewItem(const QUrl &url);
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
virtual inline QRectF boundingRect() const { return _boundingRect; }