Commit 365a330c authored by Michael Carpenter's avatar Michael Carpenter

Fix for Standard and Advanced param views not displaying or accepting edits properly

parent b38630b3
...@@ -12,7 +12,9 @@ AdvancedParamConfig::~AdvancedParamConfig() ...@@ -12,7 +12,9 @@ AdvancedParamConfig::~AdvancedParamConfig()
} }
void AdvancedParamConfig::addRange(QString title,QString description,QString param,double min,double max) void AdvancedParamConfig::addRange(QString title,QString description,QString param,double min,double max)
{ {
ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); ParamWidget *widget = new ParamWidget(param,ui.scrollAreaWidgetContents);
connect(widget,SIGNAL(doubleValueChanged(QString,double)),this,SLOT(doubleValueChanged(QString,double)));
connect(widget,SIGNAL(intValueChanged(QString,int)),this,SLOT(intValueChanged(QString,int)));
m_paramToWidgetMap[param] = widget; m_paramToWidgetMap[param] = widget;
widget->setupDouble(title + "(" + param + ")",description,0,min,max); widget->setupDouble(title + "(" + param + ")",description,0,min,max);
ui.verticalLayout->addWidget(widget); ui.verticalLayout->addWidget(widget);
...@@ -21,7 +23,9 @@ void AdvancedParamConfig::addRange(QString title,QString description,QString par ...@@ -21,7 +23,9 @@ void AdvancedParamConfig::addRange(QString title,QString description,QString par
void AdvancedParamConfig::addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist) void AdvancedParamConfig::addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist)
{ {
ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); ParamWidget *widget = new ParamWidget(param,ui.scrollAreaWidgetContents);
connect(widget,SIGNAL(doubleValueChanged(QString,double)),this,SLOT(doubleValueChanged(QString,double)));
connect(widget,SIGNAL(intValueChanged(QString,int)),this,SLOT(intValueChanged(QString,int)));
m_paramToWidgetMap[param] = widget; m_paramToWidgetMap[param] = widget;
widget->setupCombo(title + "(" + param + ")",description,valuelist); widget->setupCombo(title + "(" + param + ")",description,valuelist);
ui.verticalLayout->addWidget(widget); ui.verticalLayout->addWidget(widget);
...@@ -31,6 +35,30 @@ void AdvancedParamConfig::parameterChanged(int uas, int component, QString param ...@@ -31,6 +35,30 @@ void AdvancedParamConfig::parameterChanged(int uas, int component, QString param
{ {
if (m_paramToWidgetMap.contains(parameterName)) if (m_paramToWidgetMap.contains(parameterName))
{ {
m_paramToWidgetMap[parameterName]->setValue(value.toDouble()); if (value.type() == QVariant::Double)
{
m_paramToWidgetMap[parameterName]->setValue(value.toDouble());
}
else
{
m_paramToWidgetMap[parameterName]->setValue(value.toInt());
}
} }
} }
void AdvancedParamConfig::doubleValueChanged(QString param,double value)
{
if (!m_uas)
{
this->showNullMAVErrorMessageBox();
}
m_uas->getParamManager()->setParameter(1,param,value);
}
void AdvancedParamConfig::intValueChanged(QString param,int value)
{
if (!m_uas)
{
this->showNullMAVErrorMessageBox();
}
m_uas->getParamManager()->setParameter(1,param,value);
}
...@@ -16,6 +16,8 @@ public: ...@@ -16,6 +16,8 @@ public:
void addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist); void addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist);
private slots: private slots:
void parameterChanged(int uas, int component, QString parameterName, QVariant value); void parameterChanged(int uas, int component, QString parameterName, QVariant value);
void doubleValueChanged(QString param,double value);
void intValueChanged(QString param,int value);
private: private:
QMap<QString,ParamWidget*> m_paramToWidgetMap; QMap<QString,ParamWidget*> m_paramToWidgetMap;
Ui::AdvancedParamConfig ui; Ui::AdvancedParamConfig ui;
......
...@@ -85,23 +85,27 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas) ...@@ -85,23 +85,27 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas)
ui.advancedParamButton->setVisible(true); ui.advancedParamButton->setVisible(true);
ui.advParamListButton->setVisible(true); ui.advParamListButton->setVisible(true);
QString compare = "";
if (uas->getSystemType() == MAV_TYPE_FIXED_WING) if (uas->getSystemType() == MAV_TYPE_FIXED_WING)
{ {
ui.arduPlanePidButton->setVisible(true); ui.arduPlanePidButton->setVisible(true);
ui.arduCopterPidButton->setVisible(false); ui.arduCopterPidButton->setVisible(false);
ui.arduRoverPidButton->setVisible(false); ui.arduRoverPidButton->setVisible(false);
compare = "ArduPlane";
} }
else if (uas->getSystemType() == MAV_TYPE_QUADROTOR) else if (uas->getSystemType() == MAV_TYPE_QUADROTOR)
{ {
ui.arduCopterPidButton->setVisible(true); ui.arduCopterPidButton->setVisible(true);
ui.arduPlanePidButton->setVisible(false); ui.arduPlanePidButton->setVisible(false);
ui.arduRoverPidButton->setVisible(false); ui.arduRoverPidButton->setVisible(false);
compare = "ArduCopter";
} }
else if (uas->getSystemType() == MAV_TYPE_GROUND_ROVER) else if (uas->getSystemType() == MAV_TYPE_GROUND_ROVER)
{ {
ui.arduRoverPidButton->setVisible(true); ui.arduRoverPidButton->setVisible(true);
ui.arduCopterPidButton->setVisible(false); ui.arduCopterPidButton->setVisible(false);
ui.arduPlanePidButton->setVisible(false); ui.arduPlanePidButton->setVisible(false);
compare = "APMRover2";
} }
...@@ -138,6 +142,7 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas) ...@@ -138,6 +142,7 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas)
{ {
parametersname = xml.attributes().value("name").toString(); parametersname = xml.attributes().value("name").toString();
} }
QVariantMap genset; QVariantMap genset;
QVariantMap advset; QVariantMap advset;
...@@ -301,24 +306,25 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas) ...@@ -301,24 +306,25 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas)
{ {
valuelist.append(QPair<int,QString>(i.key().toInt(),i.value())); valuelist.append(QPair<int,QString>(i.key().toInt(),i.value()));
} }
if (tab == "Standard") if (compare == parametersname)
{
m_standardParamConfig->addCombo(humanname,docs,name,valuelist);
}
else if (tab == "Advanced")
{ {
m_advancedParamConfig->addCombo(humanname,docs,name,valuelist); if (tab == "Standard")
{
m_standardParamConfig->addCombo(humanname,docs,name,valuelist);
}
else if (tab == "Advanced")
{
m_advancedParamConfig->addCombo(humanname,docs,name,valuelist);
}
m_advParameterList->setParameterMetaData(name,humanname,docs);
} }
m_advParameterList->setParameterMetaData(name,humanname,docs);
} }
else if (fieldmap.size() > 0) else if (fieldmap.size() > 0)
{ {
float min = 0; float min = 0;
float max = 100; float max = 65535;
if (fieldmap.contains("Range")) if (fieldmap.contains("Range"))
{ {
float min = 0;
float max = 0;
//Some range fields list "0-10" and some list "0 10". Handle both. //Some range fields list "0-10" and some list "0 10". Handle both.
if (fieldmap["Range"].split(" ").size() > 1) if (fieldmap["Range"].split(" ").size() > 1)
{ {
...@@ -331,15 +337,18 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas) ...@@ -331,15 +337,18 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas)
max = fieldmap["Range"].split("-")[1].trimmed().toFloat(); max = fieldmap["Range"].split("-")[1].trimmed().toFloat();
} }
} }
if (tab == "Standard") if (compare == parametersname)
{
m_standardParamConfig->addRange(humanname,docs,name,min,max);
}
else if (tab == "Advanced")
{ {
m_advancedParamConfig->addRange(humanname,docs,name,max,min); if (tab == "Standard")
{
m_standardParamConfig->addRange(humanname,docs,name,min,max);
}
else if (tab == "Advanced")
{
m_advancedParamConfig->addRange(humanname,docs,name,min,max);
}
m_advParameterList->setParameterMetaData(name,humanname,docs);
} }
m_advParameterList->setParameterMetaData(name,humanname,docs);
} }
} }
......
#include "ParamWidget.h" #include "ParamWidget.h"
ParamWidget::ParamWidget(QString param,QWidget *parent) : QWidget(parent)
ParamWidget::ParamWidget(QWidget *parent) : QWidget(parent)
{ {
ui.setupUi(this); ui.setupUi(this);
m_param = param;
connect(ui.doubleSpinBox,SIGNAL(editingFinished()),this,SLOT(doubleSpinEditFinished()));
connect(ui.intSpinBox,SIGNAL(editingFinished()),this,SLOT(intSpinEditFinished()));
connect(ui.valueComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboIndexChanged(int)));
connect(ui.valueSlider,SIGNAL(sliderReleased()),this,SLOT(valueSliderReleased()));
}
void ParamWidget::doubleSpinEditFinished()
{
ui.valueSlider->setValue(((ui.doubleSpinBox->value() - m_min) / (m_max - m_min)) * 100.0);
emit doubleValueChanged(m_param,ui.doubleSpinBox->value());
}
void ParamWidget::intSpinEditFinished()
{
ui.valueSlider->setValue(((ui.intSpinBox->value() - m_min) / (m_max - m_min)) * 100.0);
emit intValueChanged(m_param,ui.intSpinBox->value());
}
void ParamWidget::comboIndexChanged(int index)
{
emit intValueChanged(m_param,m_valueList[index].first);
}
void ParamWidget::valueSliderReleased()
{
//Set the spin box, and emit a signal.
if (type == INT)
{
ui.intSpinBox->setValue(((ui.valueSlider->value() / 100.0) * (m_max - m_min)) + m_min);
emit intValueChanged(m_param,ui.intSpinBox->value());
}
else if (type == DOUBLE)
{
ui.doubleSpinBox->setValue(((ui.valueSlider->value() / 100.0) * (m_max - m_min)) + m_min);
emit doubleValueChanged(m_param,ui.doubleSpinBox->value());
}
} }
ParamWidget::~ParamWidget() ParamWidget::~ParamWidget()
...@@ -19,8 +55,18 @@ void ParamWidget::setupInt(QString title,QString description,int value,int min,i ...@@ -19,8 +55,18 @@ void ParamWidget::setupInt(QString title,QString description,int value,int min,i
ui.valueSlider->show(); ui.valueSlider->show();
ui.intSpinBox->show(); ui.intSpinBox->show();
ui.doubleSpinBox->hide(); ui.doubleSpinBox->hide();
m_min = min; if (min == 0 && max == 0)
m_max = max; {
m_min = 0;
m_max = 65535;
}
else
{
m_min = min;
m_max = max;
}
ui.intSpinBox->setMinimum(m_min);
ui.intSpinBox->setMaximum(m_max);
} }
void ParamWidget::setupDouble(QString title,QString description,double value,double min,double max) void ParamWidget::setupDouble(QString title,QString description,double value,double min,double max)
...@@ -32,8 +78,18 @@ void ParamWidget::setupDouble(QString title,QString description,double value,dou ...@@ -32,8 +78,18 @@ void ParamWidget::setupDouble(QString title,QString description,double value,dou
ui.valueSlider->show(); ui.valueSlider->show();
ui.intSpinBox->hide(); ui.intSpinBox->hide();
ui.doubleSpinBox->show(); ui.doubleSpinBox->show();
m_min = min; if (min == 0 && max == 0)
m_max = max; {
m_min = 0;
m_max = 65535;
}
else
{
m_min = min;
m_max = max;
}
ui.doubleSpinBox->setMinimum(m_min);
ui.doubleSpinBox->setMaximum(m_max);
} }
void ParamWidget::setupCombo(QString title,QString description,QList<QPair<int,QString> > list) void ParamWidget::setupCombo(QString title,QString description,QList<QPair<int,QString> > list)
...@@ -47,10 +103,12 @@ void ParamWidget::setupCombo(QString title,QString description,QList<QPair<int,Q ...@@ -47,10 +103,12 @@ void ParamWidget::setupCombo(QString title,QString description,QList<QPair<int,Q
ui.doubleSpinBox->hide(); ui.doubleSpinBox->hide();
m_valueList = list; m_valueList = list;
ui.valueComboBox->clear(); ui.valueComboBox->clear();
disconnect(ui.valueComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboIndexChanged(int)));
for (int i=0;i<m_valueList.size();i++) for (int i=0;i<m_valueList.size();i++)
{ {
ui.valueComboBox->addItem(m_valueList[i].second); ui.valueComboBox->addItem(m_valueList[i].second);
} }
connect(ui.valueComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboIndexChanged(int)));
} }
void ParamWidget::setValue(double value) void ParamWidget::setValue(double value)
...@@ -58,12 +116,12 @@ void ParamWidget::setValue(double value) ...@@ -58,12 +116,12 @@ void ParamWidget::setValue(double value)
if (type == INT) if (type == INT)
{ {
ui.intSpinBox->setValue(value); ui.intSpinBox->setValue(value);
ui.valueSlider->setValue(((value + m_min) / (m_max + m_min)) * 100.0); ui.valueSlider->setValue(((value - m_min) / (m_max - m_min)) * 100.0);
} }
else if (type == DOUBLE) else if (type == DOUBLE)
{ {
ui.doubleSpinBox->setValue(value); ui.doubleSpinBox->setValue(value);
ui.valueSlider->setValue(((value + m_min) / (m_max + m_min)) * 100.0); ui.valueSlider->setValue(((value - m_min) / (m_max - m_min)) * 100.0);
} }
else if (type == COMBO) else if (type == COMBO)
{ {
...@@ -71,7 +129,9 @@ void ParamWidget::setValue(double value) ...@@ -71,7 +129,9 @@ void ParamWidget::setValue(double value)
{ {
if ((int)value == m_valueList[i].first) if ((int)value == m_valueList[i].first)
{ {
disconnect(ui.valueComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboIndexChanged(int)));
ui.valueComboBox->setCurrentIndex(i); ui.valueComboBox->setCurrentIndex(i);
connect(ui.valueComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboIndexChanged(int)));
return; return;
} }
} }
......
...@@ -9,13 +9,22 @@ class ParamWidget : public QWidget ...@@ -9,13 +9,22 @@ class ParamWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ParamWidget(QWidget *parent = 0); explicit ParamWidget(QString param,QWidget *parent = 0);
~ParamWidget(); ~ParamWidget();
void setupInt(QString title,QString description,int value,int min,int max); void setupInt(QString title,QString description,int value,int min,int max);
void setupDouble(QString title,QString description,double value,double min,double max); void setupDouble(QString title,QString description,double value,double min,double max);
void setupCombo(QString title,QString description,QList<QPair<int,QString> > list); void setupCombo(QString title,QString description,QList<QPair<int,QString> > list);
void setValue(double value); void setValue(double value);
signals:
void doubleValueChanged(QString param,double value);
void intValueChanged(QString param,int value);
private slots:
void doubleSpinEditFinished();
void intSpinEditFinished();
void comboIndexChanged(int index);
void valueSliderReleased();
private: private:
QString m_param;
enum VIEWTYPE enum VIEWTYPE
{ {
INT, INT,
......
...@@ -46,6 +46,9 @@ ...@@ -46,6 +46,9 @@
<property name="maximum"> <property name="maximum">
<number>100</number> <number>100</number>
</property> </property>
<property name="value">
<number>0</number>
</property>
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
......
...@@ -10,7 +10,9 @@ StandardParamConfig::~StandardParamConfig() ...@@ -10,7 +10,9 @@ StandardParamConfig::~StandardParamConfig()
} }
void StandardParamConfig::addRange(QString title,QString description,QString param,double min,double max) void StandardParamConfig::addRange(QString title,QString description,QString param,double min,double max)
{ {
ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); ParamWidget *widget = new ParamWidget(param,ui.scrollAreaWidgetContents);
connect(widget,SIGNAL(doubleValueChanged(QString,double)),this,SLOT(doubleValueChanged(QString,double)));
connect(widget,SIGNAL(intValueChanged(QString,int)),this,SLOT(intValueChanged(QString,int)));
paramToWidgetMap[param] = widget; paramToWidgetMap[param] = widget;
widget->setupDouble(title + "(" + param + ")",description,0,min,max); widget->setupDouble(title + "(" + param + ")",description,0,min,max);
ui.verticalLayout->addWidget(widget); ui.verticalLayout->addWidget(widget);
...@@ -19,7 +21,9 @@ void StandardParamConfig::addRange(QString title,QString description,QString par ...@@ -19,7 +21,9 @@ void StandardParamConfig::addRange(QString title,QString description,QString par
void StandardParamConfig::addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist) void StandardParamConfig::addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist)
{ {
ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); ParamWidget *widget = new ParamWidget(param,ui.scrollAreaWidgetContents);
connect(widget,SIGNAL(doubleValueChanged(QString,double)),this,SLOT(doubleValueChanged(QString,double)));
connect(widget,SIGNAL(intValueChanged(QString,int)),this,SLOT(intValueChanged(QString,int)));
paramToWidgetMap[param] = widget; paramToWidgetMap[param] = widget;
widget->setupCombo(title + "(" + param + ")",description,valuelist); widget->setupCombo(title + "(" + param + ")",description,valuelist);
ui.verticalLayout->addWidget(widget); ui.verticalLayout->addWidget(widget);
...@@ -29,6 +33,31 @@ void StandardParamConfig::parameterChanged(int uas, int component, QString param ...@@ -29,6 +33,31 @@ void StandardParamConfig::parameterChanged(int uas, int component, QString param
{ {
if (paramToWidgetMap.contains(parameterName)) if (paramToWidgetMap.contains(parameterName))
{ {
paramToWidgetMap[parameterName]->setValue(value.toDouble()); if (value.type() == QVariant::Double)
{
paramToWidgetMap[parameterName]->setValue(value.toDouble());
}
else
{
paramToWidgetMap[parameterName]->setValue(value.toInt());
}
} }
} }
void StandardParamConfig::doubleValueChanged(QString param,double value)
{
if (!m_uas)
{
this->showNullMAVErrorMessageBox();
}
m_uas->getParamManager()->setParameter(1,param,value);
}
void StandardParamConfig::intValueChanged(QString param,int value)
{
if (!m_uas)
{
this->showNullMAVErrorMessageBox();
}
m_uas->getParamManager()->setParameter(1,param,value);
}
...@@ -16,6 +16,8 @@ public: ...@@ -16,6 +16,8 @@ public:
void addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist); void addCombo(QString title,QString description,QString param,QList<QPair<int,QString> > valuelist);
private slots: private slots:
void parameterChanged(int uas, int component, QString parameterName, QVariant value); void parameterChanged(int uas, int component, QString parameterName, QVariant value);
void doubleValueChanged(QString param,double value);
void intValueChanged(QString param,int value);
private: private:
QMap<QString,ParamWidget*> paramToWidgetMap; QMap<QString,ParamWidget*> paramToWidgetMap;
Ui::StandardParamConfig ui; Ui::StandardParamConfig ui;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment