#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(); } 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; layout_danger->addWidget(slider_danger); std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); 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->vib_alert_danger[chan].direct_upper)); ui->checkBox_direct->setChecked(setpoint_data->vib_alert_danger[chan].direct_enable); slider_direct->m_upper = setpoint_data->vib_alert_danger[chan].direct_upper; ui->lineEdit_1x_ampl_upper->setText(QString::number(setpoint_data->vib_alert_danger[chan].x1_ampl_upper)); ui->lineEdit_1x_ampl_lower->setText(QString::number(setpoint_data->vib_alert_danger[chan].x1_ampl_lower)); ui->checkBox_1x_ampl->setChecked(setpoint_data->vib_alert_danger[chan].x1_ampl_enable); slider_1x_ampl->m_upper = setpoint_data->vib_alert_danger[chan].x1_ampl_upper; slider_1x_ampl->m_lower = setpoint_data->vib_alert_danger[chan].x1_ampl_lower; ui->lineEdit_2x_ampl_upper->setText(QString::number(setpoint_data->vib_alert_danger[chan].x2_ampl_upper)); ui->lineEdit_2x_ampl_lower->setText(QString::number(setpoint_data->vib_alert_danger[chan].x2_ampl_lower)); ui->checkBox_2x_ampl->setChecked(setpoint_data->vib_alert_danger[chan].x2_ampl_enable); slider_2x_ampl->m_upper = setpoint_data->vib_alert_danger[chan].x2_ampl_upper; slider_2x_ampl->m_lower = setpoint_data->vib_alert_danger[chan].x2_ampl_lower; ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->vib_alert_danger[chan].danger_upper)); ui->checkBox_danger->setChecked(setpoint_data->vib_alert_danger[chan].danger_enable); slider_danger->m_upper = setpoint_data->vib_alert_danger[chan].danger_upper; }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() { std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); if (base_ptr == nullptr) { qCritical() << "[Setpoint::confirm] should not be here"; return; } int chan = ui->comboBox_chan->currentIndex(); std::shared_ptr ptr = std::dynamic_pointer_cast(base_ptr); ptr->vib_alert_danger[chan].direct_upper = ui->lineEdit_direct_upper->text().toFloat(); ptr->vib_alert_danger[chan].direct_enable = ui->checkBox_direct->checkState(); ptr->vib_alert_danger[chan].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat(); ptr->vib_alert_danger[chan].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat(); ptr->vib_alert_danger[chan].x1_ampl_enable = ui->checkBox_1x_ampl->checkState(); ptr->vib_alert_danger[chan].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat(); ptr->vib_alert_danger[chan].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat(); ptr->vib_alert_danger[chan].x2_ampl_enable = ui->checkBox_2x_ampl->checkState(); ptr->vib_alert_danger[chan].danger_param = ui->comboBox_danger->currentIndex(); ptr->vib_alert_danger[chan].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); ptr->vib_alert_danger[chan].danger_enable = ui->checkBox_danger->checkState(); this->close(); } void Setpoint::on_pushButton_cancel_clicked() { this->close(); } void Setpoint::on_pushButton_set_default_clicked() { }