summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2021-11-03 17:49:35 +0100
committerMarc Mutz <marc.mutz@qt.io>2021-11-04 12:02:47 +0100
commit5d19219eebeceb41f6ddab1052da0117a663534a (patch)
tree0369868e453f640c7a574ad9acc2695fec4915c0 /src/plugins
parent4a3996e98b3fe4bb5ca06380264ae86715706cbc (diff)
QNI NetworkManager: Extract Method primaryConnectionDevicePath()
Avoids duplication of complex code (RB tree lookup). Change-Id: I70ac7095b05ee56cdf7c86dd1d1a7c9c3232c9d4 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp16
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h4
2 files changed, 15 insertions, 5 deletions
diff --git a/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp
index 768cb4a788..f892348992 100644
--- a/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp
+++ b/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp
@@ -135,19 +135,25 @@ static QDBusInterface getPrimaryDevice(const QDBusObjectPath &devicePath)
QDBusConnection::systemBus());
}
-auto QNetworkManagerInterface::deviceType() const -> NMDeviceType
+std::optional<QDBusObjectPath> QNetworkManagerInterface::primaryConnectionDevicePath() const
{
auto it = propertyMap.constFind(u"PrimaryConnection"_qs);
if (it != propertyMap.cend())
- return extractDeviceType(it->value<QDBusObjectPath>());
+ return it->value<QDBusObjectPath>();
+ return std::nullopt;
+}
+
+auto QNetworkManagerInterface::deviceType() const -> NMDeviceType
+{
+ if (const auto path = primaryConnectionDevicePath())
+ return extractDeviceType(*path);
return NM_DEVICE_TYPE_UNKNOWN;
}
auto QNetworkManagerInterface::meteredState() const -> NMMetered
{
- auto it = propertyMap.constFind(u"PrimaryConnection"_qs);
- if (it != propertyMap.cend())
- return extractDeviceMetered(it->value<QDBusObjectPath>());
+ if (const auto path = primaryConnectionDevicePath())
+ return extractDeviceMetered(*path);
return NM_METERED_UNKNOWN;
}
diff --git a/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h b/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h
index d248c4a40c..f13ec88ad5 100644
--- a/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h
+++ b/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h
@@ -55,6 +55,8 @@
#include <QtDBus/QDBusPendingCallWatcher>
#include <QtDBus/QDBusObjectPath>
+#include <optional>
+
// Matches 'NMDeviceState' from https://developer.gnome.org/NetworkManager/stable/nm-dbus-types.html
enum NMDeviceState {
NM_DEVICE_STATE_UNKNOWN = 0,
@@ -184,6 +186,8 @@ private:
NMDeviceType extractDeviceType(const QDBusObjectPath &devicePath) const;
NMMetered extractDeviceMetered(const QDBusObjectPath &devicePath) const;
+ std::optional<QDBusObjectPath> primaryConnectionDevicePath() const;
+
QVariantMap propertyMap;
};