80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
#include "apikeyvaluehelper.h"
|
|
|
|
void ApiKeyValueHelper::setDeviceConnection(DeviceConnection *deviceConnection)
|
|
{
|
|
if (m_deviceConnection == deviceConnection)
|
|
return;
|
|
|
|
if (m_deviceConnection)
|
|
{
|
|
disconnect(m_deviceConnection, &DeviceConnection::fullStatusReceived,
|
|
this, &ApiKeyValueHelper::fullStatusReceived);
|
|
disconnect(m_deviceConnection, &DeviceConnection::valueChanged,
|
|
this, &ApiKeyValueHelper::valueChangedSlot);
|
|
}
|
|
|
|
emit deviceConnectionChanged(m_deviceConnection = deviceConnection);
|
|
|
|
if (m_deviceConnection)
|
|
{
|
|
connect(m_deviceConnection, &DeviceConnection::fullStatusReceived,
|
|
this, &ApiKeyValueHelper::fullStatusReceived);
|
|
connect(m_deviceConnection, &DeviceConnection::valueChanged,
|
|
this, &ApiKeyValueHelper::valueChangedSlot);
|
|
}
|
|
|
|
fullStatusReceived();
|
|
}
|
|
|
|
void ApiKeyValueHelper::setApiKey(const QString &apiKey)
|
|
{
|
|
if (m_apiKey == apiKey)
|
|
return;
|
|
|
|
emit apiKeyChanged(m_apiKey = apiKey);
|
|
|
|
fullStatusReceived();
|
|
}
|
|
|
|
void ApiKeyValueHelper::fullStatusReceived()
|
|
{
|
|
if (!m_deviceConnection)
|
|
{
|
|
if (m_value.isValid())
|
|
emit valueChanged(m_value = {});
|
|
if (m_exists)
|
|
emit existsChanged(m_exists = false);
|
|
return;
|
|
}
|
|
|
|
const auto &fullStatus = m_deviceConnection->getFullStatus();
|
|
const auto iter = fullStatus.find(m_apiKey);
|
|
|
|
QVariant value;
|
|
bool exists{};
|
|
|
|
if (iter != std::cend(fullStatus))
|
|
{
|
|
value = *iter;
|
|
exists = true;
|
|
}
|
|
|
|
if (m_value != value)
|
|
emit valueChanged(m_value = value);
|
|
|
|
if (m_exists != exists)
|
|
emit existsChanged(m_exists = exists);
|
|
}
|
|
|
|
void ApiKeyValueHelper::valueChangedSlot(const QString &key, const QVariant &value)
|
|
{
|
|
if (m_apiKey != key)
|
|
return;
|
|
|
|
if (m_value != value)
|
|
emit valueChanged(m_value = value);
|
|
|
|
if (!m_exists)
|
|
emit existsChanged(m_exists = true);
|
|
}
|