From a71efecbcc6f714d619a922a0eaa665a3c68a3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Mon, 12 Jun 2017 15:57:31 +0200 Subject: Update Simple Browser example - Accept downloads and add a downloads list. - Fix toolbar icons being pixelated on hidpi screens by - enabling attribute AA_UseHighDpiPixmaps, and - replacing the 22x22 icons with 32x32 versions. - Move favicon selection to WebView to reduce duplication. - Replace UrlLineEdit with a standard QLineEdit using a QAction for the favicon and setClearButtonEnabled(true) for the clear button. - Fix bug where the "File -> New Tab" action would create background tabs because the QAction::triggered(bool) signal was connected to the TabWidget::createTab(bool) slot with the bool argument having a completely different meaning between the two. - Make the toolbar unmovable. Nobody wants to move the toolbar. - Add tooltips to toolbar buttons. - Add tooltips to the tab bar (page titles). - Stop adding icons to menu items only to disable them right after. Task-number: QTBUG-60655 Change-Id: I10cc0fa82dbf39281bbdbbf9ef901e1b26402f80 Reviewed-by: Leena Miettinen Reviewed-by: Michal Klocek --- .../webenginewidgets/simplebrowser/webview.cpp | 44 +++++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) (limited to 'examples/webenginewidgets/simplebrowser/webview.cpp') 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(window()); + if (!mainWindow) + return nullptr; + switch (type) { case QWebEnginePage::WebBrowserTab: { - BrowserWindow *mainWindow = qobject_cast(window()); return mainWindow->tabWidget()->createTab(); } case QWebEnginePage::WebBrowserBackgroundTab: { - BrowserWindow *mainWindow = qobject_cast(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()); -- cgit v1.2.1