#include "dialogroadnoavoid.h" #include "ui_dialogroadnoavoid.h" #include "mainwindow.h" #include DialogRoadNoavoid::DialogRoadNoavoid(OpenDrive * pxodr,std::string strdefroad,QWidget *parent) : QDialog(parent), ui(new Ui::DialogRoadNoavoid) { ui->setupUi(this); mpxodr = pxodr; int i; int nroadcount = mpxodr->GetRoadCount(); for(i=0;iGetRoad(i)->GetRoadId().data(); ui->comboBox_Road->addItem(strname); } MainWindow::ComboToString(strdefroad,ui->comboBox_Road); setWindowTitle("Road Noavoid"); } DialogRoadNoavoid::~DialogRoadNoavoid() { delete ui; } void DialogRoadNoavoid::on_comboBox_Road_currentIndexChanged(int index) { Road * pRoad = mpxodr->GetRoad(index); if(pRoad == 0) { return; } ui->lineEdit_RoadLen->setText(QString::number(pRoad->GetRoadLength(),'f',3)); ui->lineEdit_s->setText(""); ui->lineEdit_t->setText(""); unsigned int nNoavoidCount = pRoad->GetRoadNoavoidCount(); ui->comboBox_Noavoid->clear(); unsigned int i; for(i=0;icomboBox_Noavoid->addItem(QString::number(pRoad->GetRoadNoavoid(i)->GetS(),'g')); } } void DialogRoadNoavoid::on_comboBox_Noavoid_currentIndexChanged(int index) { Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex()); if(pRoad == 0) { return; } if(pRoad->GetRoadNoavoidCount() == 0) { ui->lineEdit_s->setText(""); ui->lineEdit_t->setText(""); return; } if(index<0)return; if(index>=pRoad->GetRoadNoavoidCount())return; RoadNoavoid * pRoadNoavoid = pRoad->GetRoadNoavoid(index); if(pRoadNoavoid == NULL) { return; } ui->lineEdit_s->setText(QString::number(pRoadNoavoid->GetS())); ui->lineEdit_t->setText(QString::number(pRoadNoavoid->GetLength())); } void DialogRoadNoavoid::on_pushButton_Add_clicked() { Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex()); if(pRoad == 0) { return; } if(ui->lineEdit_s->text().toStdString() == "") { QMessageBox::warning(this,"Warning","s is empty.",QMessageBox::YesAll); return; } if(ui->lineEdit_t->text().toStdString() == "") { QMessageBox::warning(this,"Warning","length is empty.",QMessageBox::YesAll); return; } double s = ui->lineEdit_s->text().toDouble(); double length = ui->lineEdit_t->text().toDouble(); pRoad->AddRoadNoavoid(s,length); on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex()); } void DialogRoadNoavoid::on_pushButton_Delete_clicked() { Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex()); if(pRoad == 0) { return; } pRoad->DeleteRoadNoavoid(ui->comboBox_Noavoid->currentIndex()); on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex()); } void DialogRoadNoavoid::on_pushButton_Change_clicked() { Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex()); if(pRoad == NULL) { return; } RoadNoavoid * pRoadNoavoid = pRoad->GetRoadNoavoid(ui->comboBox_Noavoid->currentIndex()); pRoadNoavoid->SetS(ui->lineEdit_s->text().toDouble()); pRoadNoavoid->SetLength(ui->lineEdit_t->text().toDouble()); QMessageBox::information(this,"Info","Change RoadNoavoid Successfully.",QMessageBox::YesAll); }