From 9f71b941edc5bca58589b6a153fd4b11034ba325 Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Mon, 12 Mar 2018 22:31:25 +0100 Subject: [PATCH] LP-567 factorize common code up into FieldTreeItem derived classes are simpler --- .../plugins/uavobjectbrowser/fieldtreeitem.h | 181 ++++++++---------- 1 file changed, 76 insertions(+), 105 deletions(-) diff --git a/ground/gcs/src/plugins/uavobjectbrowser/fieldtreeitem.h b/ground/gcs/src/plugins/uavobjectbrowser/fieldtreeitem.h index 5a7ebe902..7b752f11b 100644 --- a/ground/gcs/src/plugins/uavobjectbrowser/fieldtreeitem.h +++ b/ground/gcs/src/plugins/uavobjectbrowser/fieldtreeitem.h @@ -73,8 +73,40 @@ public: return parent()->isKnown(); } + void setData(QVariant value, int column) + { + QVariant currentValue = fieldToData(); + + setChanged(currentValue != value); + TreeItem::setData(value, column); + } + + void update() + { + bool updated = false; + + if (!changed()) { + QVariant currentValue = fieldToData(); + if (data() != currentValue) { + updated = true; + TreeItem::setData(currentValue); + } + } + if (changed() || updated) { + setHighlight(true); + } + } + + void apply() + { + m_field->setValue(dataToField(), m_index); + setChanged(false); + } protected: + virtual QVariant fieldToData() const = 0; + virtual QVariant dataToField() const = 0; + int m_index; UAVObjectField *m_field; }; @@ -90,16 +122,6 @@ public: FieldTreeItem(index, data, field, parent), m_enumOptions(field->getOptions()) {} - void setData(QVariant value, int column) - { - QStringList options = m_field->getOptions(); - QVariant tmpValue = m_field->getValue(m_index); - int tmpValIndex = options.indexOf(tmpValue.toString()); - - setChanged(tmpValIndex != value); - TreeItem::setData(value, column); - } - QString enumOptions(int index) { if ((index < 0) || (index >= m_enumOptions.length())) { @@ -108,25 +130,21 @@ public: return m_enumOptions.at(index); } - void apply() - { - int value = data().toInt(); - QStringList options = m_field->getOptions(); - - m_field->setValue(options[value], m_index); - setChanged(false); - } - - void update() + QVariant fieldToData() const { QStringList options = m_field->getOptions(); QVariant value = m_field->getValue(m_index); int valIndex = options.indexOf(value.toString()); - if (data() != valIndex || changed()) { - TreeItem::setData(valIndex); - setHighlight(true); - } + return valIndex; + } + + QVariant dataToField() const + { + int value = data().toInt(); + QStringList options = m_field->getOptions(); + + return options[value]; } QWidget *createEditor(QWidget *parent) const @@ -207,6 +225,16 @@ public: } } + QVariant fieldToData() const + { + return m_field->getValue(m_index).toInt(); + } + + QVariant dataToField() const + { + return data().toInt(); + } + QWidget *createEditor(QWidget *parent) const { QSpinBox *editor = new QSpinBox(parent); @@ -231,28 +259,6 @@ public: spinBox->setValue(value.toInt()); } - void setData(QVariant value, int column) - { - setChanged(m_field->getValue(m_index) != value); - TreeItem::setData(value, column); - } - - void apply() - { - m_field->setValue(data().toInt(), m_index); - setChanged(false); - } - - void update() - { - int value = m_field->getValue(m_index).toInt(); - - if (data() != value || changed()) { - TreeItem::setData(value); - setHighlight(true); - } - } - private: int m_minValue; int m_maxValue; @@ -267,26 +273,14 @@ public: FloatFieldTreeItem(UAVObjectField *field, int index, const QVariant &data, bool scientific = false, TreeItem *parent = 0) : FieldTreeItem(index, data, field, parent), m_useScientificNotation(scientific) {} - void setData(QVariant value, int column) + QVariant fieldToData() const { - setChanged(m_field->getValue(m_index) != value); - TreeItem::setData(value, column); + return m_field->getValue(m_index).toDouble(); } - void apply() + QVariant dataToField() const { - m_field->setValue(data().toDouble(), m_index); - setChanged(false); - } - - void update() - { - double value = m_field->getValue(m_index).toDouble(); - - if (data() != value || changed()) { - TreeItem::setData(value); - setHighlight(true); - } + return data().toDouble(); } QWidget *createEditor(QWidget *parent) const @@ -345,6 +339,16 @@ public: FieldTreeItem(index, data, field, parent) {} + QVariant fieldToData() const + { + return toHexString(m_field->getValue(m_index)); + } + + QVariant dataToField() const + { + return toUInt(data()); + } + QWidget *createEditor(QWidget *parent) const { QLineEdit *lineEdit = new QLineEdit(parent); @@ -368,28 +372,6 @@ public: 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 = toHexString(m_field->getValue(m_index)); - - if (data() != value || changed()) { - TreeItem::setData(value); - setHighlight(true); - } - } - private: QVariant toHexString(QVariant value) const { @@ -418,6 +400,16 @@ public: FieldTreeItem(index, data, field, parent) {} + QVariant fieldToData() const + { + return toChar(m_field->getValue(m_index)); + } + + QVariant dataToField() const + { + return toUInt(data()); + } + QWidget *createEditor(QWidget *parent) const { QLineEdit *lineEdit = new QLineEdit(parent); @@ -441,27 +433,6 @@ public: 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: QVariant toChar(QVariant value) const {