5#include <QtCore/qglobal.h>
6#include <QtCore/qloggingcategory.h>
7#include <QtNetwork/private/qnetworkinformation_p.h>
8#include <qohosnetconnection_p.h>
12Q_DECLARE_LOGGING_CATEGORY(lcNetInfoOhos)
13Q_LOGGING_CATEGORY(lcNetInfoOhos,
"qt.network.info.ohos");
19 return QString::fromUtf16(
20 QNetworkInformationBackend::PluginNames[QNetworkInformationBackend::PluginNamesOhosIndex]);
23class QOhosNetworkInformationBackend :
public QNetworkInformationBackend
27 QOhosNetworkInformationBackend();
29 QString name()
const override;
30 QNetworkInformation::Features featuresSupported()
const override;
32 static QNetworkInformation::Features featuresSupportedStatic();
35 void updateConnectivity();
37 QOhosSupplier<QtOhosNetConnection::NetState> m_netStateSupplier;
39 Q_DISABLE_COPY_MOVE(QOhosNetworkInformationBackend)
42class QOhosNetworkInformationBackendFactory :
public QNetworkInformationBackendFactory
45 Q_PLUGIN_METADATA(IID QNetworkInformationBackendFactory_iid)
46 Q_INTERFACES(QNetworkInformationBackendFactory)
48 QOhosNetworkInformationBackendFactory() =
default;
49 ~QOhosNetworkInformationBackendFactory() override =
default;
50 QString name()
const override;
51 QNetworkInformation::Features featuresSupported()
const override;
52 QNetworkInformationBackend *
53 create(QNetworkInformation::Features requiredFeatures)
const override;
56 Q_DISABLE_COPY_MOVE(QOhosNetworkInformationBackendFactory)
62 case QtOhosNetConnection::NetBearType::BEARER_CELLULAR:
63 return QNetworkInformation::TransportMedium::Cellular;
64 case QtOhosNetConnection::NetBearType::BEARER_WIFI:
65 return QNetworkInformation::TransportMedium::WiFi;
66 case QtOhosNetConnection::NetBearType::BEARER_BLUETOOTH:
67 return QNetworkInformation::TransportMedium::Bluetooth;
68 case QtOhosNetConnection::NetBearType::BEARER_ETHERNET:
69 return QNetworkInformation::TransportMedium::Ethernet;
70 case QtOhosNetConnection::NetBearType::BEARER_VPN:
71 return QNetworkInformation::TransportMedium::Unknown;
74 return QNetworkInformation::TransportMedium::Unknown;
79 switch (reachability) {
80 case QtOhosNetConnection::NetworkReachability::Disconnected:
81 return QNetworkInformation::Reachability::Disconnected;
82 case QtOhosNetConnection::NetworkReachability::Local:
83 return QNetworkInformation::Reachability::Local;
84 case QtOhosNetConnection::NetworkReachability::Site:
85 return QNetworkInformation::Reachability::Site;
86 case QtOhosNetConnection::NetworkReachability::Online:
87 return QNetworkInformation::Reachability::Online;
89 return QNetworkInformation::Reachability::Unknown;
92QString QOhosNetworkInformationBackend::name()
const
97QNetworkInformation::Features QOhosNetworkInformationBackend::featuresSupported()
const
99 return featuresSupportedStatic();
102QNetworkInformation::Features QOhosNetworkInformationBackend::featuresSupportedStatic()
104 return QNetworkInformation::Feature::Reachability
105 | QNetworkInformation::Feature::TransportMedium
106 | QNetworkInformation::Feature::CaptivePortal
107 | QNetworkInformation::Feature::Metered;
110QOhosNetworkInformationBackend::QOhosNetworkInformationBackend()
111 : m_netStateSupplier(QtOhosNetConnection::makeOhosNetStateDataSource(
112 [
this](
const QtOhosNetConnection::NetState &) {
113 updateConnectivity();
116 updateConnectivity();
119void QOhosNetworkInformationBackend::updateConnectivity()
121 const auto state = m_netStateSupplier();
123 setReachability(mapReachability(state.reachability));
125 auto transport = state.transport
126 ? mapTransportMedium(*state.transport)
127 : QNetworkInformation::TransportMedium::Unknown;
128 setTransportMedium(transport);
129 setBehindCaptivePortal(state.behindCaptivePortal);
130 setMetered(state.metered);
132 qCDebug(lcNetInfoOhos) <<
"updated reachability:" << reachability()
133 <<
"transport:" << transportMedium()
134 <<
"captive portal:" << behindCaptivePortal()
135 <<
"metered:" << isMetered();
138QString QOhosNetworkInformationBackendFactory::name()
const
140 return backendName();
143QNetworkInformation::Features QOhosNetworkInformationBackendFactory::featuresSupported()
const
145 return QOhosNetworkInformationBackend::featuresSupportedStatic();
148QNetworkInformationBackend *
149QOhosNetworkInformationBackendFactory::create(QNetworkInformation::Features requiredFeatures)
const
151 if ((requiredFeatures & featuresSupported()) != requiredFeatures)
153 return new QOhosNetworkInformationBackend();
160#include "qohosnetworkinformationbackend.moc"
Combined button and popup list for selecting options.
QtOhos::enums::ohos::net::connection::NetBearType NetBearType