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,56 @@ 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+
47+ // /! A network device.
3248class NetworkDevice : public QObject {
3349 Q_OBJECT;
3450 QML_ELEMENT;
3551 QML_UNCREATABLE (" Devices can only be acquired through Network" );
3652 // clang-format off
53+ // / The device type.
54+ Q_PROPERTY (DeviceType::Enum type READ type CONSTANT);
3755 // / The name of the device's control interface.
3856 Q_PROPERTY (QString name READ name NOTIFY nameChanged BINDABLE bindableName);
3957 // / The hardware address of the device in the XX:XX:XX:XX:XX:XX format.
4058 Q_PROPERTY (QString address READ address NOTIFY addressChanged BINDABLE bindableAddress);
4159 // / Connection state of the device.
42- Q_PROPERTY (qs::network::NetworkConnectionState ::Enum state READ state NOTIFY stateChanged BINDABLE bindableState);
60+ Q_PROPERTY (qs::network::DeviceConnectionState ::Enum state READ state NOTIFY stateChanged BINDABLE bindableState);
4361 // / A more specific device state when the backend is NetworkManager.
4462 Q_PROPERTY (qs::network::NMDeviceState::Enum nmState READ nmState NOTIFY nmStateChanged BINDABLE bindableNmState);
4563 // clang-format on
4664
4765public:
48- explicit NetworkDevice (QObject* parent = nullptr );
66+ explicit NetworkDevice (DeviceType::Enum type, QObject* parent = nullptr );
4967
5068 // / Disconnects the device and prevents it from automatically activating further connections.
5169 Q_INVOKABLE void disconnect ();
5270
71+ [[nodiscard]] DeviceType::Enum type () const { return this ->mType ; };
5372 QBindable<QString> bindableName () { return &this ->bName ; };
5473 [[nodiscard]] QString name () const { return this ->bName ; };
5574 QBindable<QString> bindableAddress () { return &this ->bAddress ; };
5675 [[nodiscard]] QString address () const { return this ->bAddress ; };
57- QBindable<NetworkConnectionState ::Enum> bindableState () { return &this ->bState ; };
58- [[nodiscard]] NetworkConnectionState ::Enum state () const { return this ->bState ; };
76+ QBindable<DeviceConnectionState ::Enum> bindableState () { return &this ->bState ; };
77+ [[nodiscard]] DeviceConnectionState ::Enum state () const { return this ->bState ; };
5978 QBindable<NMDeviceState::Enum> bindableNmState () { return &this ->bNmState ; };
6079 [[nodiscard]] NMDeviceState::Enum nmState () const { return this ->bNmState ; };
6180
@@ -67,14 +86,13 @@ class NetworkDevice: public QObject {
6786 void nmStateChanged ();
6887
6988private:
89+ DeviceType::Enum mType ;
7090 // clang-format off
7191 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bName, &NetworkDevice::nameChanged);
7292 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, QString, bAddress, &NetworkDevice::addressChanged);
73- Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, NetworkConnectionState ::Enum, bState, &NetworkDevice::stateChanged);
93+ Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, DeviceConnectionState ::Enum, bState, &NetworkDevice::stateChanged);
7494 Q_OBJECT_BINDABLE_PROPERTY (NetworkDevice, NMDeviceState::Enum, bNmState, &NetworkDevice::nmStateChanged);
7595 // clang-format on
7696};
7797
7898} // namespace qs::network
79-
80- QDebug operator <<(QDebug debug, const qs::network::NetworkDevice* device);
0 commit comments