97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "LogViewTextEdit.hpp"
|
|
#include "LogViewField.hpp"
|
|
#include "LogViewTelegram.hpp"
|
|
|
|
namespace N_LogView
|
|
{
|
|
|
|
|
|
LogViewTextEdit::LogViewTextEdit(LogViewField* a_field, QWidget* a_parent, const bool a_readonly)
|
|
: QLineEdit(a_parent)
|
|
, LogViewWidget(a_field, this, a_parent, a_readonly)
|
|
{
|
|
const QString value = a_field->value(0);
|
|
setText(value);
|
|
|
|
if (a_readonly)
|
|
{
|
|
setReadOnly(true);
|
|
setAlignment(a_field->isRightAligned() ? Qt::AlignRight : Qt::AlignLeft);
|
|
}
|
|
|
|
|
|
uint16_t maxArraySize = a_field->maxArraySize();
|
|
setMaxLength(maxArraySize);
|
|
updateToolTip(value);
|
|
|
|
|
|
QFontMetrics fm(font());
|
|
#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0)
|
|
setMinimumWidth(fm.width(QLatin1Char(' ') + value + QLatin1Char(' ')));
|
|
#else
|
|
setMinimumWidth(fm.horizontalAdvance(QLatin1Char(' ') + value + QLatin1Char(' ')));
|
|
#endif
|
|
|
|
|
|
connect(this, &LogViewTextEdit::editingFinished,
|
|
this, &LogViewTextEdit::checkAndOvertakeContent);
|
|
}
|
|
|
|
|
|
|
|
void LogViewTextEdit::checkAndOvertakeContent()
|
|
{
|
|
updateToolTip(text());
|
|
m_Valid = true;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool LogViewTextEdit::saveContent(LogViewTelegram* a_telegram)
|
|
{
|
|
if (!isValid())
|
|
return false;
|
|
if (a_telegram->isJsonTelegram())
|
|
{
|
|
a_telegram->setJsonValue(m_Field->jsonPath(), text());
|
|
}
|
|
else
|
|
{
|
|
uint16_t size = getSize();
|
|
QString content = text();
|
|
uint16_t arraySize;
|
|
if (m_Field->isDynamicArray())
|
|
{
|
|
arraySize = content.length();
|
|
a_telegram->setUIntX(LogViewTelegram::SIZE_CENTRAL_DYN_ARRAY_SIZE, arraySize);
|
|
|
|
}
|
|
else
|
|
{
|
|
arraySize = m_Field->maxArraySize();
|
|
}
|
|
|
|
|
|
for (int i = 0; i < arraySize; i++)
|
|
a_telegram->setUIntX(size, i < content.length() ? content[i].toLatin1() : 0);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|