diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-08-11 10:18:08 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-08-14 11:42:09 +0200 |
commit | 1ec53868363c41a4f08ca2660638da532eb56b10 (patch) | |
tree | ac982148b467a63e7d1ceb2a7f943c3f3f5bf8d0 /examples/webenginewidgets/simplebrowser/webview.cpp | |
parent | 49b94b14d3da42f945f6d49a3288c3ede5b98d36 (diff) | |
parent | 59e35e033b8c8327db5b3fdbfb5d6ecee48a4405 (diff) | |
download | qtwebengine-1ec53868363c41a4f08ca2660638da532eb56b10.tar.gz |
Merge remote-tracking branch 'origin/5.9' into dev
Includes sha1 bump of src/3rdparty to head of 58-based.
Change-Id: I37743c3979c1b6fb21f71eab7048e82f7aa5d78b
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/webview.cpp')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/webview.cpp | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/examples/webenginewidgets/simplebrowser/webview.cpp b/examples/webenginewidgets/simplebrowser/webview.cpp index e4e7f5efa..4bd5c84ac 100644 --- a/examples/webenginewidgets/simplebrowser/webview.cpp +++ b/examples/webenginewidgets/simplebrowser/webview.cpp @@ -52,15 +52,21 @@ WebView::WebView(QWidget *parent) : QWebEngineView(parent) - , m_loadProgress(0) + , m_loadProgress(100) { + connect(this, &QWebEngineView::loadStarted, [this]() { + m_loadProgress = 0; + emit favIconChanged(favIcon()); + }); connect(this, &QWebEngineView::loadProgress, [this](int progress) { m_loadProgress = progress; }); connect(this, &QWebEngineView::loadFinished, [this](bool success) { - if (!success) { - m_loadProgress = 0; - } + m_loadProgress = success ? 100 : -1; + emit favIconChanged(favIcon()); + }); + connect(this, &QWebEngineView::iconChanged, [this](const QIcon &) { + emit favIconChanged(favIcon()); }); connect(this, &QWebEngineView::renderProcessTerminated, @@ -115,21 +121,39 @@ bool WebView::isWebActionEnabled(QWebEnginePage::WebAction webAction) const return page()->action(webAction)->isEnabled(); } +QIcon WebView::favIcon() const +{ + QIcon favIcon = icon(); + if (!favIcon.isNull()) + return favIcon; + + if (m_loadProgress < 0) { + static QIcon errorIcon(QStringLiteral(":dialog-error.png")); + return errorIcon; + } else if (m_loadProgress < 100) { + static QIcon loadingIcon(QStringLiteral(":view-refresh.png")); + return loadingIcon; + } else { + static QIcon defaultIcon(QStringLiteral(":text-html.png")); + return defaultIcon; + } +} + QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType type) { + BrowserWindow *mainWindow = qobject_cast<BrowserWindow*>(window()); + if (!mainWindow) + return nullptr; + switch (type) { case QWebEnginePage::WebBrowserTab: { - BrowserWindow *mainWindow = qobject_cast<BrowserWindow*>(window()); return mainWindow->tabWidget()->createTab(); } case QWebEnginePage::WebBrowserBackgroundTab: { - BrowserWindow *mainWindow = qobject_cast<BrowserWindow*>(window()); - return mainWindow->tabWidget()->createTab(false); + return mainWindow->tabWidget()->createBackgroundTab(); } case QWebEnginePage::WebBrowserWindow: { - BrowserWindow *mainWindow = new BrowserWindow(); - Browser::instance().addWindow(mainWindow); - return mainWindow->currentTab(); + return mainWindow->browser()->createWindow()->currentTab(); } case QWebEnginePage::WebDialog: { WebPopupWindow *popup = new WebPopupWindow(page()->profile()); |