summaryrefslogtreecommitdiffstats
path: root/src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp')
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp102
1 files changed, 41 insertions, 61 deletions
diff --git a/src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp b/src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp
index 67129af2de..f583d1dcf6 100644
--- a/src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp
+++ b/src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp
@@ -1,9 +1,7 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
-#include <QtNetwork/private/qnetworkinformation_p.h>
-
-#include "qnetworkmanagerservice.h"
+#include "qnetworkmanagernetworkinformationbackend.h"
#include <QtCore/qglobal.h>
#include <QtCore/private/qobject_p.h>
@@ -94,46 +92,20 @@ bool isMeteredFromNMMetered(QNetworkManagerInterface::NMMetered metered)
case QNetworkManagerInterface::NM_METERED_UNKNOWN:
return false;
}
- Q_UNREACHABLE();
- return false;
+ Q_UNREACHABLE_RETURN(false);
}
} // unnamed namespace
static QString backendName()
{
- return QString::fromUtf16(QNetworkInformationBackend::PluginNames
- [QNetworkInformationBackend::PluginNamesLinuxIndex]);
+ return QStringView(QNetworkInformationBackend::PluginNames
+ [QNetworkInformationBackend::PluginNamesLinuxIndex]).toString();
}
-class QNetworkManagerNetworkInformationBackend : public QNetworkInformationBackend
+QString QNetworkManagerNetworkInformationBackend::name() const
{
- Q_OBJECT
-public:
- QNetworkManagerNetworkInformationBackend();
- ~QNetworkManagerNetworkInformationBackend() = default;
-
- QString name() const override { return backendName(); }
- QNetworkInformation::Features featuresSupported() const override
- {
- if (!isValid())
- return {};
- return featuresSupportedStatic();
- }
-
- static QNetworkInformation::Features featuresSupportedStatic()
- {
- using Feature = QNetworkInformation::Feature;
- return QNetworkInformation::Features(Feature::Reachability | Feature::CaptivePortal
- | Feature::TransportMedium | Feature::Metered);
- }
-
- bool isValid() const { return iface.isValid(); }
-
-private:
- Q_DISABLE_COPY_MOVE(QNetworkManagerNetworkInformationBackend)
-
- QNetworkManagerInterface iface;
-};
+ return backendName();
+}
class QNetworkManagerNetworkInformationBackendFactory : public QNetworkInformationBackendFactory
{
@@ -168,34 +140,42 @@ private:
QNetworkManagerNetworkInformationBackend::QNetworkManagerNetworkInformationBackend()
{
- auto updateReachability = [this](QNetworkManagerInterface::NMState newState) {
- setReachability(reachabilityFromNMState(newState));
- };
- updateReachability(iface.state());
- connect(&iface, &QNetworkManagerInterface::stateChanged, this, std::move(updateReachability));
-
- auto updateBehindCaptivePortal = [this](QNetworkManagerInterface::NMConnectivityState state) {
- const bool behindPortal = (state == QNetworkManagerInterface::NM_CONNECTIVITY_PORTAL);
- setBehindCaptivePortal(behindPortal);
- };
- updateBehindCaptivePortal(iface.connectivityState());
- connect(&iface, &QNetworkManagerInterface::connectivityChanged, this,
- std::move(updateBehindCaptivePortal));
-
- auto updateTransportMedium = [this](QNetworkManagerInterface::NMDeviceType newDevice) {
- setTransportMedium(transportMediumFromDeviceType(newDevice));
- };
- updateTransportMedium(iface.deviceType());
- connect(&iface, &QNetworkManagerInterface::deviceTypeChanged, this,
- std::move(updateTransportMedium));
-
- auto updateMetered = [this](QNetworkManagerInterface::NMMetered metered) {
- setMetered(isMeteredFromNMMetered(metered));
- };
- updateMetered(iface.meteredState());
- connect(&iface, &QNetworkManagerInterface::meteredChanged, this, std::move(updateMetered));
+ if (!iface.isValid())
+ return;
+ iface.setBackend(this);
+ onStateChanged(iface.state());
+ onConnectivityChanged(iface.connectivityState());
+ onDeviceTypeChanged(iface.deviceType());
+ onMeteredChanged(iface.meteredState());
+}
+
+void QNetworkManagerNetworkInformationBackend::onStateChanged(
+ QNetworkManagerInterface::NMState newState)
+{
+ setReachability(reachabilityFromNMState(newState));
}
+void QNetworkManagerNetworkInformationBackend::onConnectivityChanged(
+ QNetworkManagerInterface::NMConnectivityState connectivityState)
+{
+ const bool behindPortal =
+ (connectivityState == QNetworkManagerInterface::NM_CONNECTIVITY_PORTAL);
+ setBehindCaptivePortal(behindPortal);
+}
+
+void QNetworkManagerNetworkInformationBackend::onDeviceTypeChanged(
+ QNetworkManagerInterface::NMDeviceType newDevice)
+{
+ setTransportMedium(transportMediumFromDeviceType(newDevice));
+}
+
+void QNetworkManagerNetworkInformationBackend::onMeteredChanged(
+ QNetworkManagerInterface::NMMetered metered)
+{
+ setMetered(isMeteredFromNMMetered(metered));
+};
+
QT_END_NAMESPACE
#include "qnetworkmanagernetworkinformationbackend.moc"
+#include "moc_qnetworkmanagernetworkinformationbackend.cpp"