7#include <QtCore/qglobal.h>
8#include <QtCore/private/qobject_p.h>
10#include <QtDBus/qdbusmessage.h>
13Q_DECLARE_LOGGING_CATEGORY(lcNetInfoNLM)
14Q_LOGGING_CATEGORY(lcNetInfoNM,
"qt.network.info.networkmanager");
17QNetworkInformation::Reachability reachabilityFromNMState(QNetworkManagerInterface::NMState state)
20 case QNetworkManagerInterface::NM_STATE_UNKNOWN:
21 case QNetworkManagerInterface::NM_STATE_ASLEEP:
22 case QNetworkManagerInterface::NM_STATE_CONNECTING:
23 return QNetworkInformation::Reachability::Unknown;
24 case QNetworkManagerInterface::NM_STATE_DISCONNECTING:
25 case QNetworkManagerInterface::NM_STATE_DISCONNECTED:
26 return QNetworkInformation::Reachability::Disconnected;
27 case QNetworkManagerInterface::NM_STATE_CONNECTED_LOCAL:
28 return QNetworkInformation::Reachability::Local;
29 case QNetworkManagerInterface::NM_STATE_CONNECTED_SITE:
30 return QNetworkInformation::Reachability::Site;
31 case QNetworkManagerInterface::NM_STATE_CONNECTED_GLOBAL:
32 return QNetworkInformation::Reachability::Online;
34 return QNetworkInformation::Reachability::Unknown;
37QNetworkInformation::TransportMedium
41 case QNetworkManagerInterface::NM_DEVICE_TYPE_ETHERNET:
42 return QNetworkInformation::TransportMedium::Ethernet;
43 case QNetworkManagerInterface::NM_DEVICE_TYPE_WIFI:
44 return QNetworkInformation::TransportMedium::WiFi;
45 case QNetworkManagerInterface::NM_DEVICE_TYPE_BT:
46 return QNetworkInformation::TransportMedium::Bluetooth;
47 case QNetworkManagerInterface::NM_DEVICE_TYPE_MODEM:
48 return QNetworkInformation::TransportMedium::Cellular;
82 return QNetworkInformation::TransportMedium::Unknown;
96 Q_UNREACHABLE_RETURN(
false);
102 return QStringView(QNetworkInformationBackend::PluginNames
103 [QNetworkInformationBackend::PluginNamesLinuxIndex]).toString();
108 return backendName();
114 Q_PLUGIN_METADATA(IID QNetworkInformationBackendFactory_iid)
124 return QNetworkManagerNetworkInformationBackend::featuresSupportedStatic();
129 if ((requiredFeatures & featuresSupported()) != requiredFeatures)
134 if (!backend->isValid())
135 delete std::exchange(backend,
nullptr);
144 if (!iface.isValid())
146 iface.setBackend(
this);
147 onStateChanged(iface.state());
154 QNetworkManagerInterface::NMState newState)
156 setReachability(reachabilityFromNMState(newState));
162 const bool behindPortal =
164 setBehindCaptivePortal(behindPortal);
170 setTransportMedium(transportMediumFromDeviceType(newDevice));
176 setMetered(isMeteredFromNMMetered(metered));
181#include "qnetworkmanagernetworkinformationbackend.moc"
182#include "moc_qnetworkmanagernetworkinformationbackend.cpp"
static bool networkManagerAvailable()
@ NM_DEVICE_TYPE_OLPC_MESH
@ NM_DEVICE_TYPE_WIREGUARD
@ NM_DEVICE_TYPE_OVS_INTERFACE
@ NM_DEVICE_TYPE_OVS_PORT
@ NM_DEVICE_TYPE_INFINIBAND
@ NM_DEVICE_TYPE_IP_TUNNEL
@ NM_DEVICE_TYPE_OVS_BRIDGE
@ NM_DEVICE_TYPE_WIFI_P2P
Combined button and popup list for selecting options.