4#include <QtNetwork/private/qnetworkinformation_p.h>
8#include <QtCore/qglobal.h>
9#include <QtCore/private/qobject_p.h>
10#include <QtCore/qscopeguard.h>
12#include <QtCore/private/qfunctions_win_p.h>
26bool testCONNECTIVITY(NLM_CONNECTIVITY connectivity, NLM_CONNECTIVITY flag)
28 return (connectivity & flag) == flag;
33 if (connectivity == NLM_CONNECTIVITY_DISCONNECTED)
35 if (testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV6_INTERNET)
36 || testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV4_INTERNET)) {
39 if (testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV6_SUBNET)
40 || testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV4_SUBNET)) {
43 if (testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV6_LOCALNETWORK)
44 || testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV4_LOCALNETWORK)) {
47 if (testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV6_NOTRAFFIC)
48 || testCONNECTIVITY(connectivity, NLM_CONNECTIVITY_IPV4_NOTRAFFIC)) {
79 [[nodiscard]]
bool start();
84 void setConnectivity(NLM_CONNECTIVITY newConnectivity);
85 void checkCaptivePortal();
91 NLM_CONNECTIVITY connectivity = NLM_CONNECTIVITY_DISCONNECTED;
93 bool monitoring =
false;
111 create(QNetworkInformation::Features requiredFeatures)
const override
116 if (!backend->start()) {
117 qCWarning(lcNetInfoNLM) <<
"Failed to start listening to events";
127 if (!comHelper.isValid())
132 &QNetworkListManagerNetworkInformationBackend::setConnectivity);
146void QNetworkListManagerNetworkInformationBackend::setConnectivity(NLM_CONNECTIVITY newConnectivity)
148 if (reachabilityFromNLM_CONNECTIVITY(connectivity)
149 != reachabilityFromNLM_CONNECTIVITY(newConnectivity)) {
150 connectivity = newConnectivity;
154 checkCaptivePortal();
158void QNetworkListManagerNetworkInformationBackend::checkCaptivePortal()
166 qFatal(
"Moving QNetworkListManagerNetworkInformationBackend to different thread is not supported");
175 if (!comHelper.isValid())
181 if (managerEvents->start())
190 managerEvents->stop();
192 managerEvents.Reset();
198#include "qnetworklistmanagernetworkinformationbackend.moc"
void transportMediumChanged(QNetworkInformation::TransportMedium)
void isMeteredChanged(bool)
void connectivityChanged(NLM_CONNECTIVITY)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
virtual bool event(QEvent *event)
This virtual function receives events to an object and should return true if the event e was recogniz...
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf16(const char16_t *, qsizetype size=-1)
Combined button and popup list for selecting options.
#define Q_LOGGING_CATEGORY(name,...)
#define qCWarning(category,...)
#define QT_CONFIG(feature)