From 58c4883e9bd10a52f704babd9d85ce3fb5316fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Wed, 6 Dec 2023 11:57:52 +0100 Subject: [PATCH] Add CheckConnectivity method and verify connectivity on state changed due to missing property changed signal --- libnymea-networkmanager/networkmanager.cpp | 21 ++++++++++++++++++++- libnymea-networkmanager/networkmanager.h | 4 +++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libnymea-networkmanager/networkmanager.cpp b/libnymea-networkmanager/networkmanager.cpp index 9571cb5..235ed32 100644 --- a/libnymea-networkmanager/networkmanager.cpp +++ b/libnymea-networkmanager/networkmanager.cpp @@ -592,6 +592,24 @@ bool NetworkManager::enableWireless(bool enabled) return m_networkManagerInterface->setProperty("WirelessEnabled", enabled); } +void NetworkManager::checkConnectivity() +{ + // Get network devices + qCDebug(dcNetworkManager()) << "Checking connectivity ..."; + QDBusMessage query = m_networkManagerInterface->call("CheckConnectivity"); + if(query.type() != QDBusMessage::ReplyMessage) { + qCWarning(dcNetworkManager()) << query.errorName() << query.errorMessage(); + return; + } + + if (query.arguments().isEmpty()) + return; + + NetworkManagerConnectivityState state = static_cast(query.arguments().at(0).toUInt()); + qCDebug(dcNetworkManager()) << "Checked connectevitiy state successfully:" << query.arguments().at(0).toUInt() << state; + setConnectivityState(state); +} + void NetworkManager::init() { qCDebug(dcNetworkManager()) << "Initializing network manager"; @@ -766,6 +784,7 @@ void NetworkManager::setState(const NetworkManager::NetworkManagerState &state) qCDebug(dcNetworkManager()) << "State changed:" << networkManagerStateToString(state); m_state = state; emit stateChanged(m_state); + checkConnectivity(); } void NetworkManager::onServiceRegistered() @@ -780,7 +799,7 @@ void NetworkManager::onServiceUnregistered() deinit(); } -void NetworkManager::onStateChanged(const uint &state) +void NetworkManager::onStateChanged(uint state) { setState(static_cast(state)); } diff --git a/libnymea-networkmanager/networkmanager.h b/libnymea-networkmanager/networkmanager.h index 0bf7b5f..16a39c4 100644 --- a/libnymea-networkmanager/networkmanager.h +++ b/libnymea-networkmanager/networkmanager.h @@ -134,6 +134,8 @@ public: bool wirelessEnabled() const; bool enableWireless(bool enabled); + void checkConnectivity(); + private: QDBusServiceWatcher *m_serviceWatcher = nullptr; QDBusInterface *m_networkManagerInterface = nullptr; @@ -187,7 +189,7 @@ private slots: void onServiceRegistered(); void onServiceUnregistered(); - void onStateChanged(const uint &state); + void onStateChanged(uint state); void onDeviceAdded(const QDBusObjectPath &deviceObjectPath); void onDeviceRemoved(const QDBusObjectPath &deviceObjectPath); void onPropertiesChanged(const QVariantMap &properties);