1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-15 07:29:15 +01:00

OP-1524 Added CharFieldTreeItem and the check for the 'char' unit in array fields.

This commit is contained in:
m_thread 2014-10-03 16:44:00 +02:00
parent e553014596
commit 5c2a013433
3 changed files with 76 additions and 3 deletions

View File

@ -433,4 +433,75 @@ private:
}
};
class CharFieldTreeItem : public FieldTreeItem {
Q_OBJECT
public:
CharFieldTreeItem(UAVObjectField *field, int index, const QList<QVariant> &data, TreeItem *parent = 0) :
FieldTreeItem(index, data, parent), m_field(field)
{}
CharFieldTreeItem(UAVObjectField *field, int index, const QVariant &data, TreeItem *parent = 0) :
FieldTreeItem(index, data, parent), m_field(field)
{}
QWidget *createEditor(QWidget *parent)
{
QLineEdit *lineEdit = new QLineEdit(parent);
lineEdit->setInputMask(QString(1, 'N'));
return lineEdit;
}
QVariant getEditorValue(QWidget *editor)
{
QLineEdit *lineEdit = static_cast<QLineEdit *>(editor);
return lineEdit->text();
}
void setEditorValue(QWidget *editor, QVariant value)
{
QLineEdit *lineEdit = static_cast<QLineEdit *>(editor);
lineEdit->setText(value.toString());
}
void setData(QVariant value, int column)
{
setChanged(m_field->getValue(m_index) != toUInt(value));
TreeItem::setData(value, column);
}
void apply()
{
m_field->setValue(toUInt(data()), m_index);
setChanged(false);
}
void update()
{
QVariant value = toChar(m_field->getValue(m_index));
if (data() != value || changed()) {
TreeItem::setData(value);
setHighlight(true);
}
}
private:
UAVObjectField *m_field;
QVariant toChar(QVariant value)
{
return value.toChar();
}
QVariant toUInt(QVariant str)
{
return QVariant(str.toString().at(0).toLatin1());
}
};
#endif // FIELDTREEITEM_H

View File

@ -230,6 +230,8 @@ void UAVObjectTreeModel::addSingleField(int index, UAVObjectField *field, TreeIt
data.append(field->getUnits());
if (field->getUnits().toLower() == "hex") {
item = new HexFieldTreeItem(field, index, data);
} else if (field->getUnits().toLower() == "char") {
item = new CharFieldTreeItem(field, index, data);
} else {
item = new IntFieldTreeItem(field, index, data);
}

View File

@ -3,9 +3,9 @@
<description>Extended GPS status.</description>
<field name="Status" units="" type="enum" elements="1" options="NONE,GPSV9" defaultvalue="NONE"/>
<field name="FlightTime" units="" type="uint32" elements="1"/>
<field name="BoardType" units="bytes" type="uint8" elements="2"/>
<field name="FirmwareHash" units=" bytes" type="uint8" elements="8"/>
<field name="FirmwareTag" units="bytes" type="uint8" elements="26"/>
<field name="BoardType" units="hex" type="uint8" elements="2"/>
<field name="FirmwareHash" units="hex" type="uint8" elements="8"/>
<field name="FirmwareTag" units="char" type="uint8" elements="26"/>
<field name="Options" units="" type="uint16" elements="1"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="false" updatemode="manual" period="0"/>