summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/webengine/quicknanobrowser/BrowserDialog.qml12
-rw-r--r--examples/webengine/quicknanobrowser/BrowserWindow.qml33
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.cpp14
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.h1
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.cpp80
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.h3
-rw-r--r--examples/webenginewidgets/simplebrowser/tabwidget.cpp1
-rw-r--r--examples/webenginewidgets/simplebrowser/tabwidget.h1
-rw-r--r--examples/webenginewidgets/simplebrowser/webpage.cpp1
-rw-r--r--examples/webenginewidgets/simplebrowser/webpopupwindow.cpp7
-rw-r--r--examples/webenginewidgets/simplebrowser/webview.cpp8
-rw-r--r--examples/webenginewidgets/simplebrowser/webview.h1
12 files changed, 121 insertions, 41 deletions
diff --git a/examples/webengine/quicknanobrowser/BrowserDialog.qml b/examples/webengine/quicknanobrowser/BrowserDialog.qml
index d060e2828..770cfee6a 100644
--- a/examples/webengine/quicknanobrowser/BrowserDialog.qml
+++ b/examples/webengine/quicknanobrowser/BrowserDialog.qml
@@ -50,11 +50,12 @@
import QtQuick 2.1
import QtQuick.Window 2.2
-import QtWebEngine 1.2
+import QtWebEngine 1.7
Window {
+ id: window
property alias currentWebView: webView
- flags: Qt.Dialog
+ flags: Qt.Dialog | Qt.WindowStaysOnTopHint
width: 800
height: 600
visible: true
@@ -62,5 +63,12 @@ Window {
WebEngineView {
id: webView
anchors.fill: parent
+
+ onGeometryChangeRequested: {
+ window.x = geometry.x
+ window.y = geometry.y
+ window.width = geometry.width
+ window.height = geometry.height
+ }
}
}
diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml
index 16efc9e37..f3bd8e457 100644
--- a/examples/webengine/quicknanobrowser/BrowserWindow.qml
+++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml
@@ -57,7 +57,7 @@ import QtQuick.Controls.Styles 1.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.0
import QtQuick.Window 2.1
-import QtWebEngine 1.3
+import QtWebEngine 1.7
ApplicationWindow {
id: browserWindow
@@ -87,6 +87,8 @@ ApplicationWindow {
property alias fullScreenSupportEnabled: fullScreenSupportEnabled.checked
property alias autoLoadIconsForPage: autoLoadIconsForPage.checked
property alias touchIconsEnabled: touchIconsEnabled.checked
+ property alias webRTCPublicInterfacesOnly : webRTCPublicInterfacesOnly.checked
+ property alias devToolsEnabled: devToolsEnabled.checked
}
Action {
@@ -311,6 +313,18 @@ ApplicationWindow {
checked: WebEngine.settings.touchIconsEnabled
enabled: autoLoadIconsForPage.checked
}
+ MenuItem {
+ id: webRTCPublicInterfacesOnly
+ text: "WebRTC Public Interfaces Only"
+ checkable: true
+ checked: WebEngine.settings.webRTCPublicInterfacesOnly
+ }
+ MenuItem {
+ id: devToolsEnabled
+ text: "Open DevTools"
+ checkable: true
+ checked: false
+ }
}
}
}
@@ -384,6 +398,7 @@ ApplicationWindow {
settings.fullScreenSupportEnabled: appSettings.fullScreenSupportEnabled
settings.autoLoadIconsForPage: appSettings.autoLoadIconsForPage
settings.touchIconsEnabled: appSettings.touchIconsEnabled
+ settings.webRTCPublicInterfacesOnly: appSettings.webRTCPublicInterfacesOnly
onCertificateError: {
error.defer();
@@ -423,6 +438,13 @@ ApplicationWindow {
request.accept();
}
+ onQuotaPermissionRequested: {
+ if (request.requestedSize <= 5 * 1024 * 1024)
+ request.accept();
+ else
+ request.reject();
+ }
+
onRenderProcessTerminated: {
var status = "";
switch (terminationStatus) {
@@ -461,6 +483,15 @@ ApplicationWindow {
}
}
}
+ WebEngineView {
+ id: devToolsView
+ visible: devToolsEnabled.checked
+ height: 400
+ inspectedView: tabs.currentIndex < tabs.count ? tabs.getTab(tabs.currentIndex).item : null
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ }
MessageDialog {
id: sslDialog
diff --git a/examples/webenginewidgets/simplebrowser/browser.cpp b/examples/webenginewidgets/simplebrowser/browser.cpp
index c50974531..5c6dbd35e 100644
--- a/examples/webenginewidgets/simplebrowser/browser.cpp
+++ b/examples/webenginewidgets/simplebrowser/browser.cpp
@@ -69,7 +69,19 @@ Browser::Browser()
BrowserWindow *Browser::createWindow(bool offTheRecord)
{
auto profile = offTheRecord ? &m_otrProfile : QWebEngineProfile::defaultProfile();
- auto mainWindow = new BrowserWindow(this, profile);
+ auto mainWindow = new BrowserWindow(this, profile, false);
+ m_windows.append(mainWindow);
+ QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() {
+ m_windows.removeOne(mainWindow);
+ });
+ mainWindow->show();
+ return mainWindow;
+}
+
+BrowserWindow *Browser::createDevToolsWindow()
+{
+ auto profile = QWebEngineProfile::defaultProfile();
+ auto mainWindow = new BrowserWindow(this, profile, true);
m_windows.append(mainWindow);
QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() {
m_windows.removeOne(mainWindow);
diff --git a/examples/webenginewidgets/simplebrowser/browser.h b/examples/webenginewidgets/simplebrowser/browser.h
index 9240cc987..fbc8465d2 100644
--- a/examples/webenginewidgets/simplebrowser/browser.h
+++ b/examples/webenginewidgets/simplebrowser/browser.h
@@ -66,6 +66,7 @@ public:
QVector<BrowserWindow*> windows() { return m_windows; }
BrowserWindow *createWindow(bool offTheRecord = false);
+ BrowserWindow *createDevToolsWindow();
DownloadManagerWidget &downloadManagerWidget() { return m_downloadManagerWidget; }
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.cpp b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
index 016d58afe..c369a90fa 100644
--- a/examples/webenginewidgets/simplebrowser/browserwindow.cpp
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
@@ -67,11 +67,11 @@
#include <QVBoxLayout>
#include <QWebEngineProfile>
-BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile)
+BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools)
: m_browser(browser)
, m_profile(profile)
, m_tabWidget(new TabWidget(profile, this))
- , m_progressBar(new QProgressBar(this))
+ , m_progressBar(nullptr)
, m_historyBackAction(nullptr)
, m_historyForwardAction(nullptr)
, m_stopAction(nullptr)
@@ -83,49 +83,59 @@ BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile)
setAttribute(Qt::WA_DeleteOnClose, true);
setFocusPolicy(Qt::ClickFocus);
- QToolBar *toolbar = createToolBar();
- addToolBar(toolbar);
- menuBar()->addMenu(createFileMenu(m_tabWidget));
- menuBar()->addMenu(createEditMenu());
- menuBar()->addMenu(createViewMenu(toolbar));
- menuBar()->addMenu(createWindowMenu(m_tabWidget));
- menuBar()->addMenu(createHelpMenu());
+ if (!forDevTools) {
+ m_progressBar = new QProgressBar(this);
+
+ QToolBar *toolbar = createToolBar();
+ addToolBar(toolbar);
+ menuBar()->addMenu(createFileMenu(m_tabWidget));
+ menuBar()->addMenu(createEditMenu());
+ menuBar()->addMenu(createViewMenu(toolbar));
+ menuBar()->addMenu(createWindowMenu(m_tabWidget));
+ menuBar()->addMenu(createHelpMenu());
+ }
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setMargin(0);
- addToolBarBreak();
+ if (!forDevTools) {
+ addToolBarBreak();
- m_progressBar->setMaximumHeight(1);
- m_progressBar->setTextVisible(false);
- m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}"));
+ m_progressBar->setMaximumHeight(1);
+ m_progressBar->setTextVisible(false);
+ m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}"));
+
+ layout->addWidget(m_progressBar);
+ }
- layout->addWidget(m_progressBar);
layout->addWidget(m_tabWidget);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
connect(m_tabWidget, &TabWidget::titleChanged, this, &BrowserWindow::handleWebViewTitleChanged);
- connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) {
- statusBar()->showMessage(url);
- });
- connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress);
- connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged);
- connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) {
- m_urlLineEdit->setText(url.toDisplayString());
- });
- connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon);
- connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() {
- m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text()));
- });
+ if (!forDevTools) {
+ connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) {
+ statusBar()->showMessage(url);
+ });
+ connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress);
+ connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged);
+ connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) {
+ m_urlLineEdit->setText(url.toDisplayString());
+ });
+ connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon);
+ connect(m_tabWidget, &TabWidget::devToolsRequested, this, &BrowserWindow::handleDevToolsRequested);
+ connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() {
+ m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text()));
+ });
- QAction *focusUrlLineEditAction = new QAction(this);
- addAction(focusUrlLineEditAction);
- focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
- connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () {
- m_urlLineEdit->setFocus(Qt::ShortcutFocusReason);
- });
+ QAction *focusUrlLineEditAction = new QAction(this);
+ addAction(focusUrlLineEditAction);
+ focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
+ connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () {
+ m_urlLineEdit->setFocus(Qt::ShortcutFocusReason);
+ });
+ }
handleWebViewTitleChanged(QString());
m_tabWidget->createTab();
@@ -504,3 +514,9 @@ void BrowserWindow::handleShowWindowTriggered()
windows.at(offset)->currentTab()->setFocus();
}
}
+
+void BrowserWindow::handleDevToolsRequested(QWebEnginePage *source)
+{
+ source->setDevToolsPage(m_browser->createDevToolsWindow()->currentTab()->page());
+ source->triggerAction(QWebEnginePage::InspectElement);
+}
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.h b/examples/webenginewidgets/simplebrowser/browserwindow.h
index b522a6b9d..8f328b751 100644
--- a/examples/webenginewidgets/simplebrowser/browserwindow.h
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.h
@@ -69,7 +69,7 @@ class BrowserWindow : public QMainWindow
Q_OBJECT
public:
- BrowserWindow(Browser *browser, QWebEngineProfile *profile);
+ BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools = false);
QSize sizeHint() const override;
TabWidget *tabWidget() const;
WebView *currentTab() const;
@@ -87,6 +87,7 @@ private slots:
void handleWebViewLoadProgress(int);
void handleWebViewTitleChanged(const QString &title);
void handleWebActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled);
+ void handleDevToolsRequested(QWebEnginePage *source);
private:
QMenu *createFileMenu(TabWidget *tabWidget);
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.cpp b/examples/webenginewidgets/simplebrowser/tabwidget.cpp
index e7376c7a5..8b458a9af 100644
--- a/examples/webenginewidgets/simplebrowser/tabwidget.cpp
+++ b/examples/webenginewidgets/simplebrowser/tabwidget.cpp
@@ -190,6 +190,7 @@ void TabWidget::setupView(WebView *webView)
if (index >= 0)
closeTab(index);
});
+ connect(webView, &WebView::devToolsRequested, this, &TabWidget::devToolsRequested);
}
WebView *TabWidget::createTab()
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.h b/examples/webenginewidgets/simplebrowser/tabwidget.h
index 5b09f2708..bf83781df 100644
--- a/examples/webenginewidgets/simplebrowser/tabwidget.h
+++ b/examples/webenginewidgets/simplebrowser/tabwidget.h
@@ -77,6 +77,7 @@ signals:
void urlChanged(const QUrl &url);
void favIconChanged(const QIcon &icon);
void webActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled);
+ void devToolsRequested(QWebEnginePage *source);
public slots:
// current tab/page slots
diff --git a/examples/webenginewidgets/simplebrowser/webpage.cpp b/examples/webenginewidgets/simplebrowser/webpage.cpp
index 3b78b8618..903956419 100644
--- a/examples/webenginewidgets/simplebrowser/webpage.cpp
+++ b/examples/webenginewidgets/simplebrowser/webpage.cpp
@@ -56,6 +56,7 @@
#include "webview.h"
#include <QAuthenticator>
#include <QMessageBox>
+#include <QStyle>
WebPage::WebPage(QWebEngineProfile *profile, QObject *parent)
: QWebEnginePage(profile, parent)
diff --git a/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp b/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp
index 02cea35de..19e3b0124 100644
--- a/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp
+++ b/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp
@@ -55,6 +55,7 @@
#include <QIcon>
#include <QLineEdit>
#include <QVBoxLayout>
+#include <QWindow>
WebPopupWindow::WebPopupWindow(QWebEngineProfile *profile)
: m_urlLineEdit(new QLineEdit(this))
@@ -92,10 +93,8 @@ WebView *WebPopupWindow::view() const
void WebPopupWindow::handleGeometryChangeRequested(const QRect &newGeometry)
{
- m_view->setMinimumSize(newGeometry.width(), newGeometry.height());
- move(newGeometry.topLeft() - m_view->pos());
- // let the layout do the magic
- resize(0, 0);
+ if (QWindow *window = windowHandle())
+ setGeometry(newGeometry.marginsRemoved(window->frameMargins()));
show();
m_view->setFocus();
}
diff --git a/examples/webenginewidgets/simplebrowser/webview.cpp b/examples/webenginewidgets/simplebrowser/webview.cpp
index 868cca037..ab42c4a0a 100644
--- a/examples/webenginewidgets/simplebrowser/webview.cpp
+++ b/examples/webenginewidgets/simplebrowser/webview.cpp
@@ -167,6 +167,7 @@ QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType type)
}
case QWebEnginePage::WebDialog: {
WebPopupWindow *popup = new WebPopupWindow(page()->profile());
+ connect(popup->view(), &WebView::devToolsRequested, this, &WebView::devToolsRequested);
return popup->view();
}
}
@@ -185,6 +186,13 @@ void WebView::contextMenuEvent(QContextMenuEvent *event)
menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewWindow));
menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewTab));
}
+ it = std::find(actions.cbegin(), actions.cend(), page()->action(QWebEnginePage::InspectElement));
+ if (it == actions.cend()) {
+ QAction *action = new QAction(menu);
+ action->setText("Inspect Element");
+ connect(action, &QAction::triggered, [this]() { emit devToolsRequested(page()); });
+ menu->addAction(action);
+ }
menu->popup(event->globalPos());
}
diff --git a/examples/webenginewidgets/simplebrowser/webview.h b/examples/webenginewidgets/simplebrowser/webview.h
index 7276ab1c4..8559a68b8 100644
--- a/examples/webenginewidgets/simplebrowser/webview.h
+++ b/examples/webenginewidgets/simplebrowser/webview.h
@@ -75,6 +75,7 @@ protected:
signals:
void webActionEnabledChanged(QWebEnginePage::WebAction webAction, bool enabled);
void favIconChanged(const QIcon &icon);
+ void devToolsRequested(QWebEnginePage *source);
private:
void createWebActionTrigger(QWebEnginePage *page, QWebEnginePage::WebAction);