-
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathwirelessstatus.cpp
69 lines (53 loc) · 2.16 KB
/
wirelessstatus.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// SPDX-FileCopyrightText: 2023 Yari Polla <[email protected]>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "wirelessstatus.h"
#include <NetworkManagerQt/ActiveConnection>
#include <NetworkManagerQt/Manager>
#include <NetworkManagerQt/WirelessSetting>
WirelessStatus::WirelessStatus(QObject *parent)
: QObject(parent)
{
connect(NetworkManager::notifier(), &NetworkManager::Notifier::activeConnectionsChanged, this, &WirelessStatus::activeConnectionsChanged);
activeConnectionsChanged();
}
WirelessStatus::~WirelessStatus() = default;
QString WirelessStatus::wifiSSID() const
{
return m_wifiSSID;
}
QString WirelessStatus::hotspotSSID() const
{
return m_hotspotSSID;
}
void WirelessStatus::activeConnectionsChanged()
{
for (const NetworkManager::ActiveConnection::Ptr &active : NetworkManager::activeConnections()) {
connect(active.data(), &NetworkManager::ActiveConnection::stateChanged, this, &WirelessStatus::stateChanged);
Q_EMIT active.data()->stateChanged(active->state());
}
}
void WirelessStatus::stateChanged()
{
auto connection = qobject_cast<NetworkManager::ActiveConnection *>(QObject::sender());
if (connection->type() == NetworkManager::ConnectionSettings::ConnectionType::Wireless) {
NetworkManager::WirelessSetting::Ptr wifiSetting =
connection->connection()->settings()->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>();
bool connected = connection->state() == NetworkManager::ActiveConnection::Activated;
if (wifiSetting->mode() == NetworkManager::WirelessSetting::Ap || wifiSetting->mode() == NetworkManager::WirelessSetting::Adhoc) {
if (connected) {
m_hotspotSSID = connection->connection()->name();
} else {
m_hotspotSSID = "";
}
Q_EMIT hotspotSSIDChanged(m_hotspotSSID);
} else {
if (connected) {
m_wifiSSID = connection->connection()->name();
} else {
m_wifiSSID = "";
}
Q_EMIT wifiSSIDChanged(m_wifiSSID);
}
}
}
#include "moc_wirelessstatus.cpp"