1010
1111namespace qs ::network {
1212
13- // /! Connection state.
14- class NetworkConnectionState : public QObject {
13+ // /! Connection state of a NetworkDevice .
14+ class DeviceConnectionState : public QObject {
1515 Q_OBJECT;
1616 QML_ELEMENT;
1717 QML_SINGLETON;
@@ -25,37 +25,55 @@ class NetworkConnectionState: public QObject {
2525 Disconnected = 4 ,
2626 };
2727 Q_ENUM (Enum);
28- Q_INVOKABLE static QString toString (NetworkConnectionState ::Enum state);
28+ Q_INVOKABLE static QString toString (DeviceConnectionState ::Enum state);
2929};
3030
31- // /! A Network device.
31+ // /! Type of network device.
32+ class DeviceType : public QObject {
33+ Q_OBJECT;
34+ QML_ELEMENT;
35+ QML_SINGLETON;
36+
37+ public:
38+ enum Enum : quint8 {
39+ None = 0 ,
40+ Wifi = 1 ,
41+ };
42+ Q_ENUM (Enum);
43+ Q_INVOKABLE static QString toString (DeviceType::Enum type);
44+ };
45+
46+ // /! A network device.
3247class NetworkDevice : public QObject {
3348 Q_OBJECT;
3449 QML_ELEMENT;
3550 QML_UNCREATABLE (" Devices can only be acquired through Network" );
3651 // clang-format off
52+ // / The device type.
53+ Q_PROPERTY (DeviceType::Enum type READ type CONSTANT);
3754 // / The name of the device's control interface.
3855 Q_PROPERTY (QString name READ name NOTIFY nameChanged BINDABLE bindableName);
3956 // / The hardware address of the device in the XX:XX:XX:XX:XX:XX format.
4057 Q_PROPERTY (QString address READ address NOTIFY addressChanged BINDABLE bindableAddress);
4158 // / Connection state of the device.
42- Q_PROPERTY (qs::network::NetworkConnectionState ::Enum state READ state NOTIFY stateChanged BINDABLE bindableState);
59+ Q_PROPERTY (qs::network::DeviceConnectionState ::Enum state READ state NOTIFY stateChanged BINDABLE bindableState);
4360 // / A more specific device state when the backend is NetworkManager.
4461 Q_PROPERTY (qs::network::NMDeviceState::Enum nmState READ nmState NOTIFY nmStateChanged BINDABLE bindableNmState);
4562 // clang-format on
4663
4764public:
48- explicit NetworkDevice (QObject* parent = nullptr );
65+ explicit NetworkDevice (DeviceType::Enum type, QObject* parent = nullptr );
4966
5067 // / Disconnects the device and prevents it from automatically activating further connections.
5168 Q_INVOKABLE void disconnect ();
5269
70+ [[nodiscard]] DeviceType::Enum type () const { return this ->mType ; };
5371 QBindable<QString> bindableName () { return &this ->bName ; };
5472 [[nodiscard]] QString name () const { return this ->bName ; };
5573 QBindable<QString> bindableAddress () { return &this ->bAddress ; };
5674 [[nodiscard]] QString address () const { return this ->bAddress ; };
57- QBindable<NetworkConnectionState ::Enum> bindableState () { return &this ->bState ; };
58- [[nodiscard]] NetworkConnectionState ::Enum state () const { return this ->bState ; };
75+ QBindable<DeviceConnectionState ::Enum> bindableState () { return &this ->bState ; };
76+ [[nodiscard]] DeviceConnectionState ::Enum state () const { return this ->bState ; };
5977 QBindable<NMDeviceState::Enum> bindableNmState () { return &this ->bNmState ; };
6078 [[nodiscard]] NMDeviceState::Enum nmState () const { return this ->bNmState ; };
6179
@@ -67,14 +85,13 @@ class NetworkDevice: public QObject {
6785 void nmStateChanged ();
6886
6987private:
88+ DeviceType::Enum mType ;
7089 // clang-format off
7190 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bName, &NetworkDevice::nameChanged);
7291 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bAddress, &NetworkDevice::addressChanged);
73- Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, NetworkConnectionState ::Enum, bState, &NetworkDevice::stateChanged);
92+ Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, DeviceConnectionState ::Enum, bState, &NetworkDevice::stateChanged);
7493 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, NMDeviceState::Enum, bNmState, &NetworkDevice::nmStateChanged);
7594 // clang-format on
7695};
7796
7897} // namespace qs::network
79-
80- QDebug operator <<(QDebug debug, const qs::network::NetworkDevice* device);
0 commit comments