|
@@ -160,7 +160,7 @@ void DialogAddRoadFromCDA::on_comboBox_geo_currentIndexChanged(int index)
|
|
|
return;
|
|
|
}
|
|
|
iv::cdageo * pgeo = &pcdaroad->mvectorgeo[index];
|
|
|
- ui->comboBox_geo->setCurrentIndex(pgeo->mngeotype);
|
|
|
+ ui->comboBox_geoType->setCurrentIndex(pgeo->mngeotype);
|
|
|
ui->lineEdit_georadius->setText(QString::number(pgeo->mfradius));
|
|
|
ui->lineEdit_geolen->setText(QString::number(pgeo->mflen));
|
|
|
}
|
|
@@ -239,3 +239,119 @@ void DialogAddRoadFromCDA::on_pushButton_lanechange_clicked()
|
|
|
ui->comboBox_Lane->setCurrentIndex(index);
|
|
|
QMessageBox::information(this,tr("Info"),tr("Change Lane Successfully."),QMessageBox::YesAll);
|
|
|
}
|
|
|
+
|
|
|
+void DialogAddRoadFromCDA::on_pushButton_geoadd_clicked()
|
|
|
+{
|
|
|
+ iv::cdaroad * pcdaroad = &mcdaroad;
|
|
|
+ iv::cdageo xgeo;
|
|
|
+ xgeo.mflen = ui->lineEdit_geolen->text().toDouble();
|
|
|
+ if(xgeo.mflen <=0)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("Geo Length Error."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ xgeo.mfradius = ui->lineEdit_georadius->text().toDouble();
|
|
|
+ xgeo.mngeotype = ui->comboBox_geoType->currentIndex();
|
|
|
+ if((xgeo.mngeotype == 1) &&(fabs(xgeo.mfradius)<1))
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("Radius Error."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(xgeo.mflen <= 0)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("geo Length Error."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int ngeocount = static_cast<int>(pcdaroad->mvectorgeo.size()) ;
|
|
|
+ pcdaroad->mvectorgeo.push_back(xgeo);
|
|
|
+ ui->comboBox_geo->addItem(QString(tr("路段"))+QString::number(ngeocount+1));
|
|
|
+ ui->comboBox_geo->setCurrentIndex(ngeocount);
|
|
|
+
|
|
|
+ int ngeosize = static_cast<int>(pcdaroad->mvectorgeo.size());
|
|
|
+ int i;
|
|
|
+ double fRoadLen = 0;
|
|
|
+ for(i=0;i<ngeosize;i++)
|
|
|
+ {
|
|
|
+ fRoadLen = fRoadLen + pcdaroad->mvectorgeo[i].mflen;
|
|
|
+ }
|
|
|
+ ui->lineEdit_roadlen->setText(QString::number(fRoadLen));
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void DialogAddRoadFromCDA::on_pushButton_geodel_clicked()
|
|
|
+{
|
|
|
+ iv::cdaroad * pcdaroad = &mcdaroad;
|
|
|
+ if(pcdaroad->mvectorgeo.size() == 0)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("No Geo."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int index = ui->comboBox_geo->currentIndex();
|
|
|
+ pcdaroad->mvectorgeo.erase(pcdaroad->mvectorgeo.begin() + index);
|
|
|
+
|
|
|
+ int nGeocount = static_cast<int>(pcdaroad->mvectorgeo.size());
|
|
|
+ int i;
|
|
|
+ ui->comboBox_geo->clear();
|
|
|
+ for(i=0;i<nGeocount;i++)
|
|
|
+ {
|
|
|
+ ui->comboBox_geo->addItem(QString(tr("路段"))+QString::number(i+1));
|
|
|
+ }
|
|
|
+
|
|
|
+ if(index<nGeocount)
|
|
|
+ {
|
|
|
+ ui->comboBox_geo->setCurrentIndex(index);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ui->comboBox_Lane->setCurrentIndex((nGeocount-1));
|
|
|
+ }
|
|
|
+
|
|
|
+ int ngeosize = static_cast<int>(pcdaroad->mvectorgeo.size());
|
|
|
+ double fRoadLen = 0;
|
|
|
+ for(i=0;i<ngeosize;i++)
|
|
|
+ {
|
|
|
+ fRoadLen = fRoadLen + pcdaroad->mvectorgeo[i].mflen;
|
|
|
+ }
|
|
|
+ ui->lineEdit_roadlen->setText(QString::number(fRoadLen));
|
|
|
+}
|
|
|
+
|
|
|
+void DialogAddRoadFromCDA::on_pushButton_geochange_clicked()
|
|
|
+{
|
|
|
+ iv::cdaroad * pcdaroad = &mcdaroad;
|
|
|
+ if(pcdaroad->mvectorgeo.size() == 0)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("No Geo."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int index = ui->comboBox_geo->currentIndex();
|
|
|
+ double flen = ui->lineEdit_geolen->text().toDouble();
|
|
|
+ if(flen<=0)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("geo Length Error."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ double fRadius = ui->lineEdit_georadius->text().toDouble();
|
|
|
+ if((ui->comboBox_geoType->currentIndex() == 1)&&(fabs(fRadius) < 1))
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,tr("Warning"),tr("Radius Error."),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ iv::cdageo * pgeo = &pcdaroad->mvectorgeo[index];
|
|
|
+ pgeo->mflen = flen;
|
|
|
+ pgeo->mfradius = fRadius;
|
|
|
+ pgeo->mngeotype = ui->comboBox_geoType->currentIndex();
|
|
|
+ ui->comboBox_geo->setCurrentIndex(index);
|
|
|
+
|
|
|
+ int ngeosize = static_cast<int>(pcdaroad->mvectorgeo.size());
|
|
|
+ double fRoadLen = 0;
|
|
|
+ int i;
|
|
|
+ for(i=0;i<ngeosize;i++)
|
|
|
+ {
|
|
|
+ fRoadLen = fRoadLen + pcdaroad->mvectorgeo[i].mflen;
|
|
|
+ }
|
|
|
+ ui->lineEdit_roadlen->setText(QString::number(fRoadLen));
|
|
|
+
|
|
|
+ QMessageBox::information(this,tr("Info"),tr("Change Lane Successfully."),QMessageBox::YesAll);
|
|
|
+}
|