Add CheckConnectivity method and verify connectivity on state changed due to missing property changed signal

This commit is contained in:
Simon Stürz 2023-12-06 11:57:52 +01:00
parent 431107c91e
commit 58c4883e9b
2 changed files with 23 additions and 2 deletions

View File

@ -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<NetworkManagerConnectivityState>(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<NetworkManagerState>(state));
}

View File

@ -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);