#include "setpoint_tachometer.h" #include "ui_setpoint_tachometer.h" #include "config_mgr.h" Setpoint_Tachometer::Setpoint_Tachometer(int slot_no_,int cardtype,QWidget *parent) : QWidget(parent), ui(new Ui::Setpoint_Tachometer) { 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_Tachometer::onComboBoxIndexChanged); current_index = ui->comboBox_chan->currentIndex(); } Setpoint_Tachometer::~Setpoint_Tachometer() { if(slider_alert != nullptr) delete slider_alert; if(slider_danger != nullptr) delete slider_danger; delete ui; } void Setpoint_Tachometer::Init(){ QVBoxLayout *layout_alert = new QVBoxLayout(ui->widget_alert); slider_alert = new RangeSlider; layout_alert->addWidget(slider_alert); 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); speed_alert_ptr = std::dynamic_pointer_cast(base_ptr); switch (car_type) { case kCardSpeedSingle:{ slider_alert->m_upper = 3500; slider_alert->m_lower = 1500; slider_alert->setRange(0,5000); slider_danger->m_upper = 4250; slider_danger->m_lower = 750; slider_danger->setRange(0,5000); int chan = ui->comboBox_chan->currentIndex(); std::shared_ptr setpoint_data = std::dynamic_pointer_cast(base_ptr); ui->lineEdit_alert_upper->setText(QString::number(setpoint_data->alert_danger[chan].speed_upper)); ui->lineEdit_alert_lower->setText(QString::number(setpoint_data->alert_danger[chan].speed_lower)); ui->checkBox_alert_upper->setChecked(setpoint_data->alert_danger[chan].speed_upper_enable); ui->checkBox_alert_lower->setChecked(setpoint_data->alert_danger[chan].speed_lower_enable); if(setpoint_data->alert_danger[chan].speed_upper > 0 && setpoint_data->alert_danger[chan].speed_lower){ slider_alert->m_upper = setpoint_data->alert_danger[chan].speed_upper; slider_alert->m_lower = setpoint_data->alert_danger[chan].speed_lower; } ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->alert_danger[chan].danger_speed_upper)); if(setpoint_data->alert_danger[chan].danger_speed_upper > 0 ){ slider_danger->m_upper = setpoint_data->alert_danger[chan].danger_speed_upper; } }break; } QObject::connect(ui->lineEdit_alert_upper, &QLineEdit::editingFinished, [&]() { slider_alert->setUpperValue(ui->lineEdit_alert_upper->text().toFloat()); }); QObject::connect(ui->lineEdit_alert_lower, &QLineEdit::editingFinished, [&]() { slider_alert->setLowerValue(ui->lineEdit_alert_lower->text().toFloat()); }); QObject::connect(slider_alert, &RangeSlider::rangeChanged, [&](float low,float high) { ui->lineEdit_alert_upper->setText(QString::number((int)high)); ui->lineEdit_alert_lower->setText(QString::number((int)low)); }); QObject::connect(ui->lineEdit_danger_upper, &QLineEdit::editingFinished, [&]() { slider_danger->setUpperValue(ui->lineEdit_danger_upper->text().toFloat()); }); QObject::connect(slider_danger, &RangeSlider::rangeChanged, [&](float low,float high) { ui->lineEdit_danger_upper->setText(QString::number((int)high)); }); } void Setpoint_Tachometer::onComboBoxIndexChanged(int index){ speed_alert_ptr->alert_danger[current_index].speed_upper = ui->lineEdit_alert_upper->text().toFloat(); speed_alert_ptr->alert_danger[current_index].speed_lower = ui->lineEdit_alert_lower->text().toFloat(); speed_alert_ptr->alert_danger[current_index].speed_upper_enable = ui->checkBox_alert_upper->checkState(); speed_alert_ptr->alert_danger[current_index].speed_lower_enable = ui->checkBox_alert_lower->checkState(); speed_alert_ptr->alert_danger[current_index].danger_speed_upper = ui->lineEdit_danger_upper->text().toFloat(); current_index = index; ui->lineEdit_alert_upper->setText(QString::number(speed_alert_ptr->alert_danger[index].speed_upper)); ui->lineEdit_alert_lower->setText(QString::number(speed_alert_ptr->alert_danger[index].speed_lower)); ui->checkBox_alert_upper->setChecked(speed_alert_ptr->alert_danger[index].speed_upper_enable); ui->checkBox_alert_lower->setChecked(speed_alert_ptr->alert_danger[index].speed_lower_enable); if(speed_alert_ptr->alert_danger[index].speed_upper > 0 && speed_alert_ptr->alert_danger[index].speed_lower){ slider_alert->m_upper = speed_alert_ptr->alert_danger[index].speed_upper; slider_alert->m_lower = speed_alert_ptr->alert_danger[index].speed_lower; } ui->lineEdit_danger_upper->setText(QString::number(speed_alert_ptr->alert_danger[index].danger_speed_upper)); if(speed_alert_ptr->alert_danger[index].danger_speed_upper > 0){ slider_danger->m_upper = speed_alert_ptr->alert_danger[index].danger_speed_upper; } } void Setpoint_Tachometer::on_pushButton_confirm_clicked() { if (speed_alert_ptr == nullptr) { qCritical() << "[Setpoint_Tachometer::confirm] should not be here"; return; } speed_alert_ptr->alert_danger[current_index].speed_upper = ui->lineEdit_alert_upper->text().toFloat(); speed_alert_ptr->alert_danger[current_index].speed_lower = ui->lineEdit_alert_lower->text().toFloat(); speed_alert_ptr->alert_danger[current_index].speed_upper_enable = ui->checkBox_alert_upper->checkState(); speed_alert_ptr->alert_danger[current_index].speed_lower_enable = ui->checkBox_alert_lower->checkState(); speed_alert_ptr->alert_danger[current_index].danger_speed_upper = ui->lineEdit_danger_upper->text().toFloat(); this->close(); } void Setpoint_Tachometer::on_pushButton_cancel_clicked() { this->close(); }