aboutsummaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/notifications/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/webenginewidgets/notifications/main.py')
-rw-r--r--examples/webenginewidgets/notifications/main.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/examples/webenginewidgets/notifications/main.py b/examples/webenginewidgets/notifications/main.py
new file mode 100644
index 000000000..b59aead97
--- /dev/null
+++ b/examples/webenginewidgets/notifications/main.py
@@ -0,0 +1,57 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 WebEngineWidgets Notifications Example"""
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QUrl, QCoreApplication
+from PySide6.QtWidgets import QApplication
+from PySide6.QtWebEngineCore import QWebEnginePage
+from PySide6.QtWebEngineWidgets import QWebEngineView
+from PySide6.QtGui import QDesktopServices
+
+from notificationpopup import NotificationPopup
+
+
+class WebEnginePage(QWebEnginePage):
+ def __init__(self, parent):
+ super().__init__(parent)
+
+ def acceptNavigationRequest(self, url: QUrl, *_):
+ if url.scheme != "https":
+ return True
+ QDesktopServices.openUrl(url)
+ return False
+
+
+if __name__ == '__main__':
+
+ src_dir = Path(__file__).resolve().parent
+ QCoreApplication.setOrganizationName("QtProject")
+ app = QApplication(sys.argv)
+ view = QWebEngineView()
+
+ # set custom page to open all page's links for https scheme in system browser
+ view.setPage(WebEnginePage(view))
+
+ def set_feature_permission(origin: QUrl, feature: QWebEnginePage.Feature):
+ if feature != QWebEnginePage.Notifications:
+ return
+
+ view.page().setFeaturePermission(origin, feature, QWebEnginePage.PermissionGrantedByUser)
+
+ view.page().featurePermissionRequested.connect(set_feature_permission)
+ profile = view.page().profile()
+ popup = NotificationPopup(view)
+
+ def presentNotification(notification):
+ popup.present(notification)
+
+ profile.setNotificationPresenter(presentNotification)
+ view.resize(640, 480)
+ view.show()
+ view.setUrl(QUrl.fromLocalFile(src_dir / "resources" / "index.html"))
+
+ sys.exit(app.exec())