// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \example webenginequick/quicknanobrowser \title WebEngine Quick Nano Browser \ingroup webengine-examples \brief A web browser implemented using the WebEngineView QML type. \image quicknanobrowser-demo.jpg \e {Quick Nano Browser} demonstrates how to use the \l{Qt WebEngine QML Types} {Qt WebEngine QML types} to develop a small web browser application that consists of a browser window with a title bar, toolbar, tab view, and status bar. The web content is loaded in a web engine view within the tab view. If certificate errors occur, users are prompted for action in a message dialog. The status bar pops up to display the URL of a hovered link. A web page can issue a request for being displayed in fullscreen mode. Users can allow full screen mode by using a toolbar button. They can leave fullscreen mode by using a keyboard shortcut. Additional toolbar buttons enable moving backwards and forwards in the browser history, reloading tab content, and opening a settings menu for enabling the following features: JavaScript, plugins, fullscreen mode, off the record, HTTP disk cache, autoloading images, and ignoring certificate errors. \include examples-run.qdocinc \section1 Creating the Main Browser Window When the browser main window is loaded, it creates an empty tab using the default profile. Each tab is a web engine view that fills the main window. We create the main window in the \e BrowserWindow.qml file using the ApplicationWindow type: \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto ApplicationWindow \printuntil currentWebView \dots \skipto width \printuntil title We use the TabBar Qt Quick control to create a tab bar anchored to the top of the window, and create a new, empty tab: \skipto TabBar { \printuntil return webview \printuntil } The tab contains a web engine view that loads web content: \skipto Component { \printuntil currentWebView.reload \printuntil /^\ {8}\}/ We use the \l Action type to create new tabs: \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto reload \skipto Action \printuntil } We use the \l TextField Qt Quick Control within a \l ToolBar to create an address bar that shows the current URL and where users can enter another URL: \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto menuBar: ToolBar \printuntil anchors.fill \dots \skipto TextField \printuntil addressBar \dots \skipto focus \printuntil /^\ {12}\}/ \section1 Handling Certificate Errors If the certificate of the site being loaded triggers a certificate error, we call the \l{WebEngineCertificateError::}{defer()} QML method to pause the URL request and wait for user input: \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto onCertificateError \printuntil } We use the Dialog type to prompt users to continue or cancel the loading of the web page. If users select \uicontrol Yes, we call the \l{WebEngineCertificateError::}{acceptCertificate()} method to continue loading content from the URL. If users select \uicontrol No, we call the \l{WebEngineCertificateError::}{rejectCertificate()} method to reject the request and stop loading content from the URL: \skipto Dialog { \printuntil /^\ {4}\}/ \section1 Entering and Leaving Fullscreen Mode We create a menu item for allowing fullscreen mode in a settings menu that we place on the tool bar. Also, we create an action for leaving fullscreen mode by using a keyboard shortcut. We call the \l{FullScreenRequest::}{accept()} method to accept the fullscreen request. The methdod sets the \l{WebEngineView::}{isFullScreen} property to be equal to the \l{FullScreenRequest::}{toggleOn} property. \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto onFullScreenRequested \printuntil /^\ {16}\}/ When entering fullscreen mode, we display a notification using the FullScreenNotification custom type that we create in \e FullScreenNotification.qml. We use the \l Action type in the settings menu to create a shortcut for leaving fullscreen mode by pressing the escape key: \quotefromfile webenginequick/quicknanobrowser/BrowserWindow.qml \skipto Settings \printuntil appSettings \skipto fullScreenSupportEnabled \printuntil Action \skipto Escape \printuntil /^\ {4}\}/ \section1 Files and Attributions The example uses icons from the Tango Icon Library: \table \row \li \l{quicknanobrowser-tango}{Tango Icon Library} \li Public Domain \endtable */