aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorOlivier De Cannière <olivier.decanniere@qt.io>2023-02-10 16:05:54 +0100
committerOlivier De Cannière <olivier.decanniere@qt.io>2023-03-03 12:02:00 +0100
commitd023d149d934897515a532a483def76801b93585 (patch)
tree3c53ea09e02b03f374fbbfbb91abc528b605bbbd /src/qml
parentea8c9a0dad435c68d42c866711b101a3805da8d4 (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.cpp24
-rw-r--r--src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp14
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
*/
/*!