From 5d19219eebeceb41f6ddab1052da0117a663534a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 3 Nov 2021 17:49:35 +0100 Subject: QNI NetworkManager: Extract Method primaryConnectionDevicePath() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoids duplication of complex code (RB tree lookup). Change-Id: I70ac7095b05ee56cdf7c86dd1d1a7c9c3232c9d4 Reviewed-by: MÃ¥rten Nordheim --- .../networkmanager/qnetworkmanagerservice.cpp | 16 +++++++++++----- .../networkmanager/qnetworkmanagerservice.h | 4 ++++ 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'src/plugins') 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 QNetworkManagerInterface::primaryConnectionDevicePath() const { auto it = propertyMap.constFind(u"PrimaryConnection"_qs); if (it != propertyMap.cend()) - return extractDeviceType(it->value()); + return it->value(); + 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()); + 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 #include +#include + // 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 primaryConnectionDevicePath() const; + QVariantMap propertyMap; }; -- cgit v1.2.3