Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qandroidnetworkinformationbackend.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <QtNetwork/private/qnetworkinformation_p.h>
5
7
8#include <QtCore/qglobal.h>
9
11Q_DECLARE_LOGGING_CATEGORY(lcNetInfoAndroid)
12Q_LOGGING_CATEGORY(lcNetInfoAndroid, "qt.network.info.android");
13
18
20{
22public:
25
26 QString name() const override { return backendName(); }
27 QNetworkInformation::Features featuresSupported() const override
28 {
30 }
31
32 static QNetworkInformation::Features featuresSupportedStatic()
33 {
34 using Feature = QNetworkInformation::Feature;
35 return QNetworkInformation::Features(Feature::Reachability | Feature::CaptivePortal
36 | Feature::TransportMedium);
37 }
38
39 bool isValid() { return m_valid; }
40
41private:
42 Q_DISABLE_COPY_MOVE(QAndroidNetworkInformationBackend);
43
44 void updateConnectivity(AndroidConnectivityManager::AndroidConnectivity connectivity);
45 void updateTransportMedium(AndroidConnectivityManager::AndroidTransport transport);
46
47 bool m_valid = false;
48};
49
51{
55public:
58 QString name() const override { return backendName(); }
59 QNetworkInformation::Features featuresSupported() const override
60 {
62 }
63
65 create(QNetworkInformation::Features requiredFeatures) const override
66 {
67 if ((requiredFeatures & featuresSupported()) != requiredFeatures)
68 return nullptr;
69 auto backend = new QAndroidNetworkInformationBackend();
70 if (!backend->isValid())
71 delete std::exchange(backend, nullptr);
72 return backend;
73 }
74
75private:
77};
78
98
99void QAndroidNetworkInformationBackend::updateConnectivity(
101{
102 using AndroidConnectivity = AndroidConnectivityManager::AndroidConnectivity;
103 static const auto mapState = [](AndroidConnectivity state) {
104 switch (state) {
105 case AndroidConnectivity::Connected:
107 case AndroidConnectivity::Disconnected:
109 case AndroidConnectivity::Unknown:
110 default:
112 }
113 };
114
115 setReachability(mapState(connectivity));
116}
117
118void QAndroidNetworkInformationBackend::updateTransportMedium(
120{
121 using AndroidTransport = AndroidConnectivityManager::AndroidTransport;
122 using TransportMedium = QNetworkInformation::TransportMedium;
123 static const auto mapTransport = [](AndroidTransport state) -> TransportMedium {
124 switch (state) {
125 case AndroidTransport::Cellular:
126 return TransportMedium::Cellular;
127 case AndroidTransport::WiFi:
128 return TransportMedium::WiFi;
129 case AndroidTransport::Bluetooth:
130 return TransportMedium::Bluetooth;
131 case AndroidTransport::Ethernet:
132 return TransportMedium::Ethernet;
133 // These are not covered yet (but may be in the future)
134 case AndroidTransport::Usb:
135 case AndroidTransport::LoWPAN:
136 case AndroidTransport::WiFiAware:
137 case AndroidTransport::Unknown:
138 return TransportMedium::Unknown;
139 }
140 };
141
142 setTransportMedium(mapTransport(transport));
143}
144
146
147#include "qandroidnetworkinformationbackend.moc"
static AndroidConnectivityManager * getInstance()
void transportMediumChanged(AndroidTransport transport)
void connectivityChanged(AndroidConnectivity connectivity)
void captivePortalChanged(bool state)
void meteredChanged(bool state)
QNetworkInformation::Features featuresSupported() const override
Features supported, return the same in QNetworkInformationBackend::featuresSupported().
QString name() const override
Backend name, return the same in QNetworkInformationBackend::name().
QNetworkInformationBackend * create(QNetworkInformation::Features requiredFeatures) const override
Create and return an instance of QNetworkInformationBackend.
static QNetworkInformation::Features featuresSupportedStatic()
QNetworkInformation::Features featuresSupported() const override
Features supported, return the same in QNetworkInformationBackendFactory::featuresSupported().
QString name() const override
Backend name, return the same in QNetworkInformationBackendFactory::name().
QNetworkInformationBackendFactory provides the interface for creating instances of QNetworkInformatio...
QNetworkInformationBackend provides the interface with which QNetworkInformation does all of its actu...
void setTransportMedium(TransportMedium medium)
static constexpr int PluginNamesAndroidIndex
static const char16_t PluginNames[4][22]
void setBehindCaptivePortal(bool behindPortal)
void setReachability(QNetworkInformation::Reachability reachability)
Call this when reachability has changed.
Feature
Lists all of the features that a plugin may currently support.
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
static QString fromUtf16(const char16_t *, qsizetype size=-1)
Definition qstring.cpp:6045
else opt state
[0]
Combined button and popup list for selecting options.
static QString backendName()
#define Q_LOGGING_CATEGORY(name,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
#define QNetworkInformationBackendFactory_iid
#define Q_OBJECT
#define Q_PLUGIN_METADATA(x)
#define Q_INTERFACES(x)
QHostInfo info
[0]