diff --git a/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp index 768cb4a7884..f8923489923 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 d248c4a40ca..f13ec88ad56 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; };