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:
parent
e553014596
commit
5c2a013433
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user