diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2017-06-12 15:57:31 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@qt.io> | 2017-07-19 10:16:37 +0000 |
commit | a71efecbcc6f714d619a922a0eaa665a3c68a3b2 (patch) | |
tree | 8d6770e40c83a0b4ef3f6cbff4f7d8a1adf77324 /examples/webenginewidgets/simplebrowser/webview.cpp | |
parent | ae71f77d5f680d8b40c9598321a687318a7ff0b2 (diff) |
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 <riitta-leena.miettinen@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
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()); |