Skip to content

Commit 6282af4

Browse files
committed
fix: show signal of active AP
1 parent c49e825 commit 6282af4

File tree

6 files changed

+34
-7
lines changed

6 files changed

+34
-7
lines changed

src/network/nm/accesspoint.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ class NMAccessPoint: public QObject {
5959
[[nodiscard]] NM80211ApSecurityFlags::Enum rsnFlags() const { return this->bRsnFlags; };
6060
[[nodiscard]] NM80211Mode::Enum mode() const { return this->bMode; };
6161
[[nodiscard]] NMWirelessSecurityType::Enum security() const { return this->bSecurity; };
62+
[[nodiscard]] bool active() const { return this->mActive; };
63+
void setActive(bool active) { this->mActive = active; };
6264

6365
signals:
6466
void ssidChanged(const QByteArray& ssid);
@@ -73,6 +75,8 @@ class NMAccessPoint: public QObject {
7375

7476
private:
7577
NMWirelessCapabilities::Enum mCaps;
78+
bool mActive = false;
79+
7680
// clang-format off
7781
Q_OBJECT_BINDABLE_PROPERTY(NMAccessPoint, QByteArray, bSsid, &NMAccessPoint::ssidChanged);
7882
Q_OBJECT_BINDABLE_PROPERTY(NMAccessPoint, quint8, bSignalStrength, &NMAccessPoint::signalStrengthChanged);

src/network/nm/device.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ void NMDevice::onActiveConnectionPathChanged(const QDBusObjectPath& path) {
6161
if (stringPath != "/") {
6262
auto* active = new NMActiveConnection(stringPath, this);
6363
this->mActiveConnection = active;
64-
qCDebug(logNetworkManager) << "Registered active connection" << stringPath;
65-
QObject::connect(
64+
QObject::connect(
6665
active,
6766
&NMActiveConnection::ready,
6867
this,

src/network/nm/wireless.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ void NMWirelessNetwork::updateSignalStrength() {
8585
NMAccessPoint* selectedAp = nullptr;
8686

8787
for (auto* ap: this->mAccessPoints.values()) {
88+
if (ap->active()) {
89+
selectedStrength = ap->signalStrength();
90+
selectedAp = ap;
91+
break;
92+
}
8893
if (selectedStrength <= ap->signalStrength()) {
8994
selectedStrength = ap->signalStrength();
9095
selectedAp = ap;
@@ -212,10 +217,22 @@ void NMWirelessDevice::initWireless() {
212217
QObject::connect(this, &NMWirelessDevice::accessPointLoaded, this, &NMWirelessDevice::onAccessPointLoaded);
213218
QObject::connect(this, &NMWirelessDevice::connectionLoaded, this, &NMWirelessDevice::onConnectionLoaded);
214219
QObject::connect(this, &NMWirelessDevice::activeConnectionLoaded, this, &NMWirelessDevice::onActiveConnectionLoaded);
220+
QObject::connect(this, &NMWirelessDevice::activeAccessPointChanged, this, &NMWirelessDevice::onActiveAccessPointChanged);
215221
// clang-format on
216222
this->registerAccessPoints();
217223
}
218224

225+
void NMWirelessDevice::onActiveAccessPointChanged(const QDBusObjectPath& path) {
226+
// Make previous AP inactive
227+
auto* prevAp = this->mAccessPoints.value(this->mActiveApPath);
228+
if (prevAp) prevAp->setActive(false);
229+
230+
// Make current AP active
231+
this->mActiveApPath = path.path();
232+
auto* curAp = this->mAccessPoints.value(path.path());
233+
if (curAp) curAp->setActive(true);
234+
}
235+
219236
void NMWirelessDevice::onAccessPointPathAdded(const QDBusObjectPath& path) {
220237
this->registerAccessPoint(path.path());
221238
}
@@ -262,6 +279,7 @@ void NMWirelessDevice::registerAccessPoint(const QString& path) {
262279
}
263280

264281
auto* ap = new NMAccessPoint(path, this->capabilities(), this);
282+
if (ap->path() == this->mActiveApPath) ap->setActive(true);
265283

266284
if (!ap->isValid()) {
267285
qCWarning(logNetworkManager) << "Ignoring invalid registration of" << path;

src/network/nm/wireless.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public slots:
102102
signals:
103103
void lastScanChanged(qint64 lastScan);
104104
void capabilitiesChanged(NMWirelessCapabilities::Enum caps);
105+
void activeAccessPointChanged(const QDBusObjectPath& path);
105106
void accessPointLoaded(NMAccessPoint* ap);
106107
void accessPointRemoved(NMAccessPoint* ap);
107108
void wifiNetworkAdded(WifiNetwork* net);
@@ -116,6 +117,7 @@ public slots:
116117
private slots:
117118
void onAccessPointPathAdded(const QDBusObjectPath& path);
118119
void onAccessPointPathRemoved(const QDBusObjectPath& path);
120+
void onActiveAccessPointChanged(const QDBusObjectPath& path);
119121
void onAccessPointLoaded(NMAccessPoint* ap);
120122
void onConnectionLoaded(NMConnectionSettings* conn);
121123
void onActiveConnectionLoaded(NMActiveConnection* active);
@@ -126,16 +128,19 @@ private slots:
126128
void initWireless();
127129
NMWirelessNetwork* registerNetwork(const QString& ssid);
128130

131+
QString mActiveApPath;
129132
QHash<QString, NMAccessPoint*> mAccessPoints;
130133
QHash<QString, NMWirelessNetwork*> mBackendNetworks;
131134

132135
// clang-format off
133136
Q_OBJECT_BINDABLE_PROPERTY(NMWirelessDevice, qint64, bLastScan, &NMWirelessDevice::lastScanChanged);
134137
Q_OBJECT_BINDABLE_PROPERTY(NMWirelessDevice, NMWirelessCapabilities::Enum, bCapabilities, &NMWirelessDevice::capabilitiesChanged);
138+
Q_OBJECT_BINDABLE_PROPERTY(NMWirelessDevice, QDBusObjectPath, bActiveAccessPoint, &NMWirelessDevice::activeAccessPointChanged);
135139

136140
QS_DBUS_BINDABLE_PROPERTY_GROUP(NMWireless, wirelessProperties);
137141
QS_DBUS_PROPERTY_BINDING(NMWirelessDevice, pLastScan, bLastScan, wirelessProperties, "LastScan");
138142
QS_DBUS_PROPERTY_BINDING(NMWirelessDevice, pCapabilities, bCapabilities, wirelessProperties, "WirelessCapabilities");
143+
QS_DBUS_PROPERTY_BINDING(NMWirelessDevice, pActiveAccessPoint, bActiveAccessPoint, wirelessProperties, "ActiveAccessPoint");
139144
// clang-format on
140145

141146
DBusNMWirelessProxy* wirelessProxy = nullptr;

src/network/test/network.qml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,19 +136,21 @@ FloatingWindow {
136136
}
137137
Text {
138138
text: NMWirelessSecurityType.toString(modelData.nmSecurity)
139-
Layout.preferredWidth: 80
139+
Layout.preferredWidth: 100
140140
horizontalAlignment: Text.AlignRight
141141
elide: Text.ElideLeft
142142
}
143143
Text {
144-
text: modelData.known ? "KNOWN" : ""
145-
Layout.preferredWidth: 50
144+
text: modelData.known ? "Known" : ""
146145
horizontalAlignment: Text.AlignLeft
147146
elide: Text.ElideRight
148147
}
149148
Text {
150149
text: modelData.signalStrength + "%"
151-
Layout.preferredWidth: 25
150+
horizontalAlignment: Text.AlignLeft
151+
}
152+
Text {
153+
text: NetworkConnectionState.toString(modelData.state)
152154
horizontalAlignment: Text.AlignLeft
153155
}
154156
}

src/network/wifi.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ void Wifi::onEnabledSet(bool enabled) {
118118
void Wifi::setDefaultDevice(WifiDevice* dev) {
119119
if (this->mDefaultDevice == dev) return;
120120
this->mDefaultDevice = dev;
121-
qCDebug(logWifi) << "Default device set to" << dev->name();
122121
emit this->defaultDeviceChanged();
123122
}
124123

0 commit comments

Comments
 (0)