126 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			126 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | #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>(cardtype); | ||
|  |     ui->label_slot->setText(QString::number(slot_no)); | ||
|  |     Init(); | ||
|  |     connect(ui->comboBox_chan, QOverload<int>::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<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); | ||
|  |     speed_alert_ptr = std::dynamic_pointer_cast<TachometerData>(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<TachometerData> setpoint_data = std::dynamic_pointer_cast<TachometerData>(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(); | ||
|  | } | ||
|  | 
 |