45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QtQml/qqmlregistration.h>
|
|
|
|
#include "deviceconnection.h"
|
|
|
|
class SendMessageHelper : public QObject
|
|
{
|
|
Q_OBJECT
|
|
QML_ELEMENT
|
|
Q_PROPERTY(DeviceConnection* deviceConnection READ deviceConnection WRITE setDeviceConnection NOTIFY deviceConnectionChanged FINAL)
|
|
Q_PROPERTY(QString requestId READ requestId NOTIFY requestIdChanged STORED false FINAL)
|
|
Q_PROPERTY(bool pending READ pending NOTIFY pendingChanged STORED false FINAL)
|
|
Q_PROPERTY(QVariant response READ response NOTIFY responseChanged FINAL)
|
|
|
|
public:
|
|
DeviceConnection *deviceConnection() { return m_deviceConnection; }
|
|
const DeviceConnection *deviceConnection() const { return m_deviceConnection; }
|
|
void setDeviceConnection(DeviceConnection *deviceConnection);
|
|
|
|
const QString &requestId() const { return m_requestId; }
|
|
|
|
bool pending() const { return m_pending; }
|
|
|
|
const QVariant &response() const { return m_response; }
|
|
|
|
Q_INVOKABLE void sendMessage(QVariantMap message);
|
|
|
|
signals:
|
|
void deviceConnectionChanged(DeviceConnection *deviceConnection);
|
|
void requestIdChanged(const QString &requestId);
|
|
void pendingChanged(bool pending);
|
|
void responseChanged(const QVariant &response);
|
|
|
|
private slots:
|
|
void responseReceived(const QString &requestId, const QVariantMap &message);
|
|
|
|
private:
|
|
DeviceConnection *m_deviceConnection{};
|
|
QString m_requestId;
|
|
bool m_pending{};
|
|
QVariant m_response;
|
|
};
|