1515namespace qs ::network {
1616
1717// /! A wifi network available to a wifi device
18- class NetworkWifiNetwork : public QObject {
18+ class WifiNetwork : public QObject {
1919 Q_OBJECT;
2020 QML_ELEMENT;
21- QML_UNCREATABLE (" Wifi netorks can only be acquired through Network" );
21+ QML_UNCREATABLE (" Wifi networks can only be acquired through Network" );
2222 // clang-format off
2323 // / The service set identifier of the wifi network
2424 Q_PROPERTY (QString ssid READ default NOTIFY ssidChanged BINDABLE bindableSsid);
25- // The current signal quality of the best access point on the network, in percent.
26- Q_PROPERTY (quint8 signal READ default NOTIFY signalChanged BINDABLE bindableSignal);
27- // clang-format on
25+ // The current signal strength of the best access point on the network, in percent.
26+ Q_PROPERTY (quint8 signalStrength READ default NOTIFY signalStrengthChanged BINDABLE bindableSignalStrength);
27+ // / True if the wireless device is curerntly connected to this wifi network.
28+ Q_PROPERTY (bool connected READ default NOTIFY connectedChanged BINDABLE bindableConnected);
29+ // clang-format on
2830
2931signals:
3032 void ssidChanged ();
31- void signalChanged ();
33+ void signalStrengthChanged ();
34+ void connectedChanged ();
3235
3336public slots:
3437 void setSsid (const QString& ssid);
35- void setSignal (quint8 signal);
38+ void setSignalStrength (quint8 signalStrength);
39+ void setConnected (bool connected);
3640
3741public:
38- explicit NetworkWifiNetwork (QObject* parent = nullptr );
42+ explicit WifiNetwork (QObject* parent = nullptr );
3943
4044 [[nodiscard]] QBindable<QString> bindableSsid () const { return &this ->bSsid ; };
41- [[nodiscard]] QBindable<quint8> bindableSignal () const { return &this ->bSignal ; };
45+ [[nodiscard]] QBindable<quint8> bindableSignalStrength () const { return &this ->bSignalStrength ; };
46+ [[nodiscard]] QBindable<bool > bindableConnected () const { return &this ->bConnected ; };
4247
4348private:
44- Q_OBJECT_BINDABLE_PROPERTY (NetworkWifiNetwork, QString, bSsid, &NetworkWifiNetwork::ssidChanged);
45- Q_OBJECT_BINDABLE_PROPERTY (NetworkWifiNetwork, quint8, bSignal, &NetworkWifiNetwork::signalChanged);
49+ // clang-format off
50+ Q_OBJECT_BINDABLE_PROPERTY (WifiNetwork, QString, bSsid, &WifiNetwork::ssidChanged);
51+ Q_OBJECT_BINDABLE_PROPERTY (WifiNetwork, quint8, bSignalStrength, &WifiNetwork::signalStrengthChanged);
52+ Q_OBJECT_BINDABLE_PROPERTY (WifiNetwork, bool , bConnected, &WifiNetwork::connectedChanged);
53+ // clang-format on
4654};
4755
4856// /! Type of network device.
@@ -57,8 +65,6 @@ class NetworkDeviceType: public QObject {
5765 Other = 0 ,
5866 // /! An 802.11 Wi-Fi device.
5967 Wireless = 1 ,
60- // /! A wired ethernet device.
61- Ethernet = 2
6268 };
6369 Q_ENUM (Enum);
6470 Q_INVOKABLE static QString toString (NetworkDeviceType::Enum type);
@@ -91,7 +97,7 @@ class NetworkDeviceState: public QObject {
9197class NetworkDevice : public QObject {
9298 Q_OBJECT;
9399 QML_ELEMENT;
94- QML_UNCREATABLE (" NetworkDevices can only be acquired through Network" );
100+ QML_UNCREATABLE (" Devices can only be acquired through Network" );
95101
96102 // clang-format off
97103 // / The name of the device's interface.
@@ -128,14 +134,11 @@ public slots:
128134 [[nodiscard]] QBindable<NetworkDeviceState::Enum> bindableState () const { return &this ->bState ; };
129135
130136private:
137+ // clang-format off
131138 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bName, &NetworkDevice::nameChanged);
132139 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bAddress, &NetworkDevice::addressChanged);
133- Q_OBJECT_BINDABLE_PROPERTY (
134- NetworkDevice,
135- NetworkDeviceState::Enum,
136- bState,
137- &NetworkDevice::stateChanged
138- );
140+ Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, NetworkDeviceState::Enum, bState, &NetworkDevice::stateChanged);
141+ // clang-format on
139142};
140143
141144// /! Wireless variant of a tracked network device.
@@ -145,11 +148,13 @@ class NetworkWifiDevice: public NetworkDevice {
145148 // clang-format off
146149 // / The timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished network scan.
147150 Q_PROPERTY (qint64 lastScan READ default NOTIFY lastScanChanged BINDABLE bindableLastScan);
148- // / True if the wireless device is currently scanning for available wifi networks.
151+ // / True if the wifi device is currently scanning for available wifi networks.
149152 Q_PROPERTY (bool scanning READ default NOTIFY scanningChanged BINDABLE bindableScanning);
150- // / A list of all available wifi networks
153+ // / The currently active wifi network
154+ // Q_PROPERTY(WifiNetwork activeNetwork READ networks CONSTANT);
155+ // / A list of all wifi networks available to this wifi device
151156 Q_PROPERTY (UntypedObjectModel* networks READ networks CONSTANT);
152- QSDOC_TYPE_OVERRIDE (ObjectModel<NetworkWifiNetwork >*)
157+ QSDOC_TYPE_OVERRIDE (ObjectModel<WifiNetwork >*)
153158 // clang-format on
154159
155160signals:
@@ -160,8 +165,8 @@ class NetworkWifiDevice: public NetworkDevice {
160165
161166public slots:
162167 void scanComplete (qint64 lastScan);
163- void addNetwork (NetworkWifiNetwork * network);
164- void removeNetwork (NetworkWifiNetwork * network);
168+ void addNetwork (WifiNetwork * network);
169+ void removeNetwork (WifiNetwork * network);
165170
166171public:
167172 explicit NetworkWifiDevice (QObject* parent = nullptr );
@@ -176,12 +181,13 @@ public slots:
176181 UntypedObjectModel* networks () { return &this ->mNetworks ; };
177182
178183private:
179- ObjectModel<NetworkWifiNetwork> mNetworks {this };
184+ static bool compareNetworks (WifiNetwork* a, WifiNetwork* b);
185+ ObjectModel<WifiNetwork> mNetworks {this };
186+
180187 Q_OBJECT_BINDABLE_PROPERTY (NetworkWifiDevice, bool , bScanning, &NetworkWifiDevice::scanningChanged);
181188 Q_OBJECT_BINDABLE_PROPERTY (NetworkWifiDevice, qint64, bLastScan, &NetworkWifiDevice::lastScanChanged);
182189};
183190
184- // -- Network --
185191class NetworkBackend : public QObject {
186192 Q_OBJECT;
187193
0 commit comments