#include "setpoint.h" #include "ui_setpoint.h" #include "config_mgr.h" #include 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); ui->label_slot->setText(QString::number(slot_no)); Init(); connect(ui->comboBox_chan, QOverload::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 base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); vib_alert_ptr = std::dynamic_pointer_cast(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 setpoint_data = std::dynamic_pointer_cast(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; } }