Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,105 @@
|
||||
// **************************************************************************
|
||||
//
|
||||
// (C) Copyright 2009 Swiss SIMTEC AG
|
||||
//
|
||||
// **************************************************************************
|
||||
//
|
||||
// $HeadURL$
|
||||
// $LastChangedBy$
|
||||
// $LastChangedDate$
|
||||
// $LastChangedRevision$
|
||||
//
|
||||
// **************************************************************************
|
||||
|
||||
// manual class headers
|
||||
#include "LogViewEnumEdit.hpp"
|
||||
#include "LogViewXdrStruct.hpp"
|
||||
#include "LogViewXdrValue.hpp"
|
||||
#include "LogViewField.hpp"
|
||||
#include "LogViewTelegram.hpp"
|
||||
|
||||
|
||||
namespace N_LogView
|
||||
{
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
LogViewEnumEdit::LogViewEnumEdit(LogViewField* a_field, QWidget* a_parent, const bool a_readonly, const int a_index)
|
||||
: QComboBox(a_parent)
|
||||
, LogViewWidget(a_field, this, a_parent, a_readonly)
|
||||
{
|
||||
QString value = a_field->value(a_index);
|
||||
|
||||
// show the tool-tip with special-case for TETRA bitfields
|
||||
setToolTip(a_field->toolTipText());
|
||||
|
||||
// fill combobox
|
||||
bool bCurrentIndexSet = false;
|
||||
int i = 0;
|
||||
while (LogViewXdrValue* child = (static_cast<const LogViewXdrStruct*>(a_field->xdrElement()))->getChildAsValue(i++))
|
||||
{
|
||||
QString enumText = LogViewField::makeClean(child->getName());
|
||||
if (!a_readonly || enumText == value)
|
||||
{
|
||||
addItem(QStringLiteral("%1 (%2)").arg(enumText).arg(child->getValue()), QVariant::fromValue(child->getValue()));
|
||||
if (a_readonly)
|
||||
bCurrentIndexSet = true;
|
||||
}
|
||||
|
||||
if (enumText == value)
|
||||
{
|
||||
setCurrentIndex(a_readonly ? 0 : i - 1);
|
||||
bCurrentIndexSet = true;
|
||||
if (!a_readonly || (0 != a_index))
|
||||
updateToolTip(itemData(currentIndex()).toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (!bCurrentIndexSet)
|
||||
{
|
||||
addItem(value);
|
||||
setCurrentIndex(findText(value));
|
||||
}
|
||||
|
||||
// connect signals
|
||||
connect(this, QOverload<int>::of(&LogViewEnumEdit::currentIndexChanged),
|
||||
this, &LogViewEnumEdit::checkAndOvertakeContent);
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
uint16_t LogViewEnumEdit::getSize() const
|
||||
{
|
||||
// todo: check ob wirklich ein struct
|
||||
const LogViewXdrStruct* xdrStruct = static_cast<const LogViewXdrStruct*>(m_Field->xdrElement());
|
||||
return xdrStruct->getEnumSize();
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
void LogViewEnumEdit::checkAndOvertakeContent()
|
||||
{
|
||||
updateToolTip(itemData(currentIndex()).toString());
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// Writes the content into telegram.
|
||||
// Returns true if successful.
|
||||
// ---------------------------------------------------------------
|
||||
bool LogViewEnumEdit::saveContent(LogViewTelegram* a_telegram)
|
||||
{
|
||||
bool ok;
|
||||
int value = itemData(currentIndex()).toInt(&ok);
|
||||
if (ok)
|
||||
{
|
||||
if (a_telegram->isJsonTelegram())
|
||||
a_telegram->setJsonValue(m_Field->jsonPath(), value);
|
||||
else
|
||||
a_telegram->setUIntX(getSize(), value);
|
||||
return true;
|
||||
}
|
||||
return false; // failure while conversion
|
||||
}
|
||||
|
||||
} // namespace N_LogView
|
||||
Reference in new issue
Block a user