diff options
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; }; |