202 lines
10 KiB
C++
202 lines
10 KiB
C++
#include "setpoint.h"
|
|
#include "ui_setpoint.h"
|
|
#include "config_mgr.h"
|
|
#include <QDebug>
|
|
|
|
Setpoint::Setpoint(int slot_no_,int cardtype,QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::Setpoint)
|
|
{
|
|
ui->setupUi(this);
|
|
slot_no = slot_no_;
|
|
car_type = static_cast<CardType>(cardtype);
|
|
ui->label_slot->setText(QString::number(slot_no));
|
|
|
|
Init();
|
|
connect(ui->comboBox_chan, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
|
this, &Setpoint::onComboBoxIndexChanged);
|
|
current_index = ui->comboBox_chan->currentIndex();
|
|
}
|
|
|
|
Setpoint::~Setpoint()
|
|
{
|
|
if(slider_direct != nullptr)
|
|
delete slider_direct;
|
|
if(slider_1x_ampl != nullptr)
|
|
delete slider_1x_ampl;
|
|
if(slider_2x_ampl != nullptr)
|
|
delete slider_2x_ampl;
|
|
if(slider_danger != nullptr)
|
|
delete slider_danger;
|
|
delete ui;
|
|
}
|
|
void Setpoint::Init(){
|
|
|
|
QVBoxLayout *layout_direct = new QVBoxLayout(ui->widget_direct);
|
|
slider_direct = new RangeSlider;
|
|
layout_direct->addWidget(slider_direct);
|
|
|
|
QVBoxLayout *layout_1x_ampl = new QVBoxLayout(ui->widget_1x_ampl);
|
|
slider_1x_ampl = new RangeSlider;
|
|
layout_1x_ampl->addWidget(slider_1x_ampl);
|
|
|
|
QVBoxLayout *layout_2x_ampl = new QVBoxLayout(ui->widget_2x_ampl);
|
|
slider_2x_ampl = new RangeSlider;
|
|
layout_2x_ampl->addWidget(slider_2x_ampl);
|
|
|
|
QVBoxLayout *layout_danger = new QVBoxLayout(ui->widget_danger);
|
|
slider_danger = new RangeSlider(1);
|
|
layout_danger->addWidget(slider_danger);
|
|
|
|
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
|
|
vib_alert_ptr = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
|
|
|
switch (car_type) {
|
|
case kCardVibSingle:{
|
|
slider_direct->setRange(0,20);
|
|
slider_1x_ampl->setRange(0,20);
|
|
slider_2x_ampl->setRange(0,20);
|
|
slider_danger->setRange(0,20);
|
|
int chan = ui->comboBox_chan->currentIndex();
|
|
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
|
ui->lineEdit_direct_upper->setText(QString::number(setpoint_data->alert_danger[chan].direct_upper));
|
|
ui->checkBox_direct->setChecked(setpoint_data->alert_danger[chan].direct_enable);
|
|
if(setpoint_data->alert_danger[chan].direct_upper > 0){
|
|
slider_direct->m_upper = setpoint_data->alert_danger[chan].direct_upper;
|
|
}
|
|
ui->lineEdit_1x_ampl_upper->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_upper));
|
|
ui->lineEdit_1x_ampl_lower->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_lower));
|
|
ui->checkBox_1x_ampl->setChecked(setpoint_data->alert_danger[chan].x1_ampl_enable);
|
|
if(setpoint_data->alert_danger[chan].x1_ampl_upper > 0 && setpoint_data->alert_danger[chan].x1_ampl_lower > 0){
|
|
slider_1x_ampl->m_upper = setpoint_data->alert_danger[chan].x1_ampl_upper;
|
|
slider_1x_ampl->m_lower = setpoint_data->alert_danger[chan].x1_ampl_lower;
|
|
}
|
|
ui->lineEdit_2x_ampl_upper->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_upper));
|
|
ui->lineEdit_2x_ampl_lower->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_lower));
|
|
ui->checkBox_2x_ampl->setChecked(setpoint_data->alert_danger[chan].x2_ampl_enable);
|
|
if(setpoint_data->alert_danger[chan].x2_ampl_upper > 0 && setpoint_data->alert_danger[chan].x2_ampl_lower > 0){
|
|
slider_2x_ampl->m_upper = setpoint_data->alert_danger[chan].x2_ampl_upper;
|
|
slider_2x_ampl->m_lower = setpoint_data->alert_danger[chan].x2_ampl_lower;
|
|
}
|
|
ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->alert_danger[chan].danger_upper));
|
|
ui->checkBox_danger->setChecked(setpoint_data->alert_danger[chan].danger_enable);
|
|
if(setpoint_data->alert_danger[chan].danger_upper > 0){
|
|
slider_danger->m_upper = setpoint_data->alert_danger[chan].danger_upper;
|
|
slider_danger->m_lower = 0;
|
|
}
|
|
}break;
|
|
case kCardSpeedSingle:{
|
|
slider_direct->setRange(0,5000);
|
|
|
|
}break;
|
|
}
|
|
QObject::connect(ui->lineEdit_direct_upper, &QLineEdit::editingFinished, [&]() {
|
|
slider_direct->setUpperValue(ui->lineEdit_direct_upper->text().toFloat());
|
|
});
|
|
QObject::connect(slider_direct, &RangeSlider::rangeChanged, [&](float low,float high) {
|
|
ui->lineEdit_direct_upper->setText(QString::number(high));
|
|
});
|
|
|
|
QObject::connect(slider_1x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
|
ui->lineEdit_1x_ampl_upper->setText(QString::number(high));
|
|
ui->lineEdit_1x_ampl_lower->setText(QString::number(low));
|
|
});
|
|
QObject::connect(ui->lineEdit_1x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
|
slider_1x_ampl->setUpperValue(ui->lineEdit_1x_ampl_upper->text().toFloat());
|
|
});
|
|
QObject::connect(ui->lineEdit_1x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
|
slider_1x_ampl->setLowerValue(ui->lineEdit_1x_ampl_lower->text().toFloat());
|
|
});
|
|
|
|
QObject::connect(slider_2x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
|
ui->lineEdit_2x_ampl_upper->setText(QString::number(high));
|
|
ui->lineEdit_2x_ampl_lower->setText(QString::number(low));
|
|
});
|
|
QObject::connect(ui->lineEdit_2x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
|
slider_1x_ampl->setUpperValue(ui->lineEdit_2x_ampl_upper->text().toFloat());
|
|
});
|
|
QObject::connect(ui->lineEdit_2x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
|
slider_1x_ampl->setLowerValue(ui->lineEdit_2x_ampl_lower->text().toFloat());
|
|
});
|
|
|
|
QObject::connect(slider_danger, &RangeSlider::rangeChanged, [&](float low,float high) {
|
|
ui->lineEdit_danger_upper->setText(QString::number(high));
|
|
});
|
|
QObject::connect(ui->lineEdit_danger_upper, &QLineEdit::editingFinished, [&]() {
|
|
slider_danger->setUpperValue(ui->lineEdit_danger_upper->text().toFloat());
|
|
});
|
|
}
|
|
|
|
void Setpoint::on_pushButton_confirm_clicked()
|
|
{
|
|
if (vib_alert_ptr == nullptr) {
|
|
qCritical() << "[Setpoint::confirm] should not be here";
|
|
return;
|
|
}
|
|
|
|
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
|
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
|
this->close();
|
|
}
|
|
|
|
|
|
void Setpoint::on_pushButton_cancel_clicked()
|
|
{
|
|
this->close();
|
|
}
|
|
|
|
|
|
void Setpoint::on_pushButton_set_default_clicked()
|
|
{
|
|
|
|
}
|
|
void Setpoint::onComboBoxIndexChanged(int index){
|
|
|
|
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
|
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
|
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
|
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
|
|
|
current_index = index;
|
|
|
|
ui->lineEdit_direct_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].direct_upper));
|
|
ui->checkBox_direct->setChecked(vib_alert_ptr->alert_danger[index].direct_enable);
|
|
if(vib_alert_ptr->alert_danger[index].direct_upper > 0)
|
|
slider_direct->m_upper = vib_alert_ptr->alert_danger[index].direct_upper;
|
|
ui->lineEdit_1x_ampl_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].x1_ampl_upper));
|
|
ui->lineEdit_1x_ampl_lower->setText(QString::number(vib_alert_ptr->alert_danger[index].x1_ampl_lower));
|
|
ui->checkBox_1x_ampl->setChecked(vib_alert_ptr->alert_danger[index].x1_ampl_enable);
|
|
if(vib_alert_ptr->alert_danger[index].x1_ampl_upper > 0 && vib_alert_ptr->alert_danger[index].x1_ampl_lower > 0){
|
|
slider_1x_ampl->m_upper = vib_alert_ptr->alert_danger[index].x1_ampl_upper;
|
|
slider_1x_ampl->m_lower = vib_alert_ptr->alert_danger[index].x1_ampl_lower;
|
|
}
|
|
ui->lineEdit_2x_ampl_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].x2_ampl_upper));
|
|
ui->lineEdit_2x_ampl_lower->setText(QString::number(vib_alert_ptr->alert_danger[index].x2_ampl_lower));
|
|
ui->checkBox_2x_ampl->setChecked(vib_alert_ptr->alert_danger[index].x2_ampl_enable);
|
|
if(vib_alert_ptr->alert_danger[index].x2_ampl_upper > 0 && vib_alert_ptr->alert_danger[index].x2_ampl_lower > 0){
|
|
slider_2x_ampl->m_upper = vib_alert_ptr->alert_danger[index].x2_ampl_upper;
|
|
slider_2x_ampl->m_lower = vib_alert_ptr->alert_danger[index].x2_ampl_lower;
|
|
}
|
|
ui->lineEdit_danger_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].danger_upper));
|
|
ui->checkBox_danger->setChecked(vib_alert_ptr->alert_danger[index].danger_enable);
|
|
if(vib_alert_ptr->alert_danger[index].danger_upper > 0){
|
|
slider_danger->m_upper = vib_alert_ptr->alert_danger[index].danger_upper;
|
|
}
|
|
}
|