diff options
Diffstat (limited to 'examples/webenginewidgets/browser/webview.cpp')
-rw-r--r-- | examples/webenginewidgets/browser/webview.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/webenginewidgets/browser/webview.cpp b/examples/webenginewidgets/browser/webview.cpp index edbaadca9..d4dd2649c 100644 --- a/examples/webenginewidgets/browser/webview.cpp +++ b/examples/webenginewidgets/browser/webview.cpp @@ -311,6 +311,7 @@ WebView::WebView(QWidget* parent) : QWebEngineView(parent) , m_progress(0) , m_page(new WebPage(this)) + , m_iconReply(0) { setPage(m_page); #if defined(QWEBENGINEPAGE_STATUSBARMESSAGE) @@ -323,6 +324,8 @@ WebView::WebView(QWidget* parent) this, SLOT(loadFinished())); connect(page(), SIGNAL(loadingUrl(QUrl)), this, SIGNAL(urlChanged(QUrl))); + connect(page(), SIGNAL(iconUrlChanged(QUrl)), + this, SLOT(onIconUrlChanged(QUrl))); #if defined(QWEBENGINEPAGE_DOWNLOADREQUESTED) connect(page(), SIGNAL(downloadRequested(QNetworkRequest)), this, SLOT(downloadRequested(QNetworkRequest))); @@ -423,6 +426,35 @@ QUrl WebView::url() const return m_initialUrl; } +QIcon WebView::icon() const +{ + if (!m_icon.isNull()) + return m_icon; + return BrowserApplication::instance()->defaultIcon(); +} + +void WebView::onIconUrlChanged(const QUrl &url) +{ + QNetworkRequest iconRequest(url); + m_iconReply = BrowserApplication::networkAccessManager()->get(iconRequest); + m_iconReply->setParent(this); + connect(m_iconReply, SIGNAL(finished()), this, SLOT(iconLoaded())); +} + +void WebView::iconLoaded() +{ + m_icon = QIcon(); + if (m_iconReply) { + QByteArray data = m_iconReply->readAll(); + QPixmap pixmap; + pixmap.loadFromData(data); + m_icon.addPixmap(pixmap); + m_iconReply->deleteLater(); + m_iconReply = 0; + } + emit iconChanged(); +} + void WebView::mousePressEvent(QMouseEvent *event) { m_page->m_pressedButtons = event->buttons(); |