diff options
author | Olivier De Cannière <olivier.decanniere@qt.io> | 2023-02-10 16:05:54 +0100 |
---|---|---|
committer | Olivier De Cannière <olivier.decanniere@qt.io> | 2023-03-03 12:02:00 +0100 |
commit | d023d149d934897515a532a483def76801b93585 (patch) | |
tree | 3c53ea09e02b03f374fbbfbb91abc528b605bbbd /src/qml | |
parent | ea8c9a0dad435c68d42c866711b101a3805da8d4 (diff) |
NetworkAccessManagerFactory: Complete documentation page with snippets
Pick-to: 6.5 6.5.0
Fixes: QTBUG-110657
Change-Id: I063eb4ac25cbe226b5a996014042515d6ada5468
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp | 24 | ||||
-rw-r--r-- | src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp | 14 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp b/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp new file mode 100644 index 0000000000..b200261035 --- /dev/null +++ b/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp @@ -0,0 +1,24 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +//! [0] +class CachingNetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory +{ +public: + + inline QNetworkAccessManager *create(QObject *parent) override + { + QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager(parent); + QNetworkDiskCache *diskCache = new QNetworkDiskCache(parent); + diskCache->setCacheDirectory("requestCache"); + networkAccessManager->setCache(diskCache); + + return networkAccessManager; + } +}; +//! [0] + +//! [1] +CachingNetworkAccessManagerFactory networkManagerFactory; +engine->setNetworkAccessManagerFactory(&networkManagerFactory); +//! [1] diff --git a/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp b/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp index 05c9347fab..a03bfc15c7 100644 --- a/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp +++ b/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp @@ -18,9 +18,20 @@ QT_BEGIN_NAMESPACE with custom QNetworkAccessManager instances with specialized caching, proxy and cookies support. + \list + \li The QNetworkDiskCache can be used as a request cache with \l {QNetworkDiskCache}. + \li Using \l {QNetworkProxy}, traffic sent by the QNetworkAccessManager can be tunnelled through a proxy. + \li Cookies can be saved for future requests by adding a \l {QNetworkCookieJar}. + \endlist + To implement a factory, subclass QQmlNetworkAccessManagerFactory and implement the virtual create() method, then assign it to the relevant QML - engine using QQmlEngine::setNetworkAccessManagerFactory(). + engine using QQmlEngine::setNetworkAccessManagerFactory(). For instance, the QNetworkAccessManager + objects created by the following snippet will cache requests. + \snippet code/src_network_access_qnetworkaccessmanager.cpp 0 + + The factory can then be passed to the QML engine so it can instantiate the QNetworkAccessManager with the custom behavior. + \snippet code/src_network_access_qnetworkaccessmanager.cpp 1 Note the QML engine may create QNetworkAccessManager instances from multiple threads. Because of this, the implementation of the create() @@ -45,6 +56,7 @@ QT_BEGIN_NAMESPACE \l {Threads and QObjects} and \l {Signals and Slots Across Threads}. \sa {C++ Extensions: Network Access Manager Factory Example}{Network Access Manager Factory Example} + \sa QNetworkDiskCache */ /*! |