diff options
author | Marc Mutz <marc.mutz@qt.io> | 2021-11-03 17:49:35 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2021-11-04 12:02:47 +0100 |
commit | 5d19219eebeceb41f6ddab1052da0117a663534a (patch) | |
tree | 0369868e453f640c7a574ad9acc2695fec4915c0 /src/plugins | |
parent | 4a3996e98b3fe4bb5ca06380264ae86715706cbc (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.cpp | 16 | ||||
-rw-r--r-- | src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h | 4 |
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; }; |