forked from feedc0de/evcharger-app
Import existing sources, this is Day 5 with this app
This commit is contained in:
1 parent
e51db32b30
commit
9fa50be902
141 files changed
+7374
No files matched your search
@@ -0,0 +1,74 @@
|
||||
#include "sendmessagehelper.h"
|
||||
|
||||
#include <QQmlEngine>
|
||||
|
||||
void SendMessageHelper::setDeviceConnection(DeviceConnection *deviceConnection)
|
||||
{
|
||||
if (m_deviceConnection == deviceConnection)
|
||||
return;
|
||||
|
||||
if (m_deviceConnection)
|
||||
{
|
||||
disconnect(m_deviceConnection, &DeviceConnection::responseReceived,
|
||||
this, &SendMessageHelper::responseReceived);
|
||||
}
|
||||
|
||||
emit deviceConnectionChanged(m_deviceConnection = deviceConnection);
|
||||
|
||||
if (m_deviceConnection)
|
||||
{
|
||||
connect(m_deviceConnection, &DeviceConnection::responseReceived,
|
||||
this, &SendMessageHelper::responseReceived);
|
||||
}
|
||||
|
||||
if (!m_requestId.isEmpty())
|
||||
{
|
||||
m_requestId.clear();
|
||||
emit requestIdChanged(m_requestId);
|
||||
}
|
||||
|
||||
if (m_pending)
|
||||
emit pendingChanged(m_pending = false);
|
||||
|
||||
if (!m_response.isNull())
|
||||
emit responseChanged(m_response = {});
|
||||
}
|
||||
|
||||
void SendMessageHelper::sendMessage(QVariantMap message)
|
||||
{
|
||||
if (!m_deviceConnection)
|
||||
{
|
||||
qWarning() << "No device connection set!";
|
||||
qmlEngine(this)->throwError(tr("No device connection set!"));
|
||||
}
|
||||
|
||||
emit requestIdChanged(m_requestId = m_deviceConnection->generateRequestId());
|
||||
|
||||
if (!m_pending)
|
||||
emit pendingChanged(m_pending = true);
|
||||
|
||||
message["requestId"] = m_requestId;
|
||||
|
||||
m_deviceConnection->sendMessage(message);
|
||||
}
|
||||
|
||||
void SendMessageHelper::responseReceived(const QString &requestId, const QVariantMap &message)
|
||||
{
|
||||
if (m_requestId.isEmpty())
|
||||
return;
|
||||
|
||||
if (m_requestId != requestId)
|
||||
return;
|
||||
|
||||
if (!m_requestId.isEmpty())
|
||||
{
|
||||
m_requestId.clear();
|
||||
emit requestIdChanged(m_requestId);
|
||||
}
|
||||
|
||||
if (m_pending)
|
||||
emit pendingChanged(m_pending = false);
|
||||
|
||||
emit responseChanged(m_response = message);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user