dialogroadnoavoid.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "dialogroadnoavoid.h"
  2. #include "ui_dialogroadnoavoid.h"
  3. #include "mainwindow.h"
  4. #include <QMessageBox>
  5. DialogRoadNoavoid::DialogRoadNoavoid(OpenDrive * pxodr,std::string strdefroad,QWidget *parent) :
  6. QDialog(parent),
  7. ui(new Ui::DialogRoadNoavoid)
  8. {
  9. ui->setupUi(this);
  10. mpxodr = pxodr;
  11. int i;
  12. int nroadcount = mpxodr->GetRoadCount();
  13. for(i=0;i<nroadcount;i++)
  14. {
  15. const char * strname = mpxodr->GetRoad(i)->GetRoadId().data();
  16. ui->comboBox_Road->addItem(strname);
  17. }
  18. MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
  19. setWindowTitle("Road Noavoid");
  20. }
  21. DialogRoadNoavoid::~DialogRoadNoavoid()
  22. {
  23. delete ui;
  24. }
  25. void DialogRoadNoavoid::on_comboBox_Road_currentIndexChanged(int index)
  26. {
  27. Road * pRoad = mpxodr->GetRoad(index);
  28. if(pRoad == 0)
  29. {
  30. return;
  31. }
  32. ui->lineEdit_RoadLen->setText(QString::number(pRoad->GetRoadLength(),'f',3));
  33. ui->lineEdit_s->setText("");
  34. ui->lineEdit_t->setText("");
  35. unsigned int nNoavoidCount = pRoad->GetRoadNoavoidCount();
  36. ui->comboBox_Noavoid->clear();
  37. unsigned int i;
  38. for(i=0;i<nNoavoidCount;i++)
  39. {
  40. ui->comboBox_Noavoid->addItem(QString::number(pRoad->GetRoadNoavoid(i)->GetS(),'g'));
  41. }
  42. }
  43. void DialogRoadNoavoid::on_comboBox_Noavoid_currentIndexChanged(int index)
  44. {
  45. Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
  46. if(pRoad == 0)
  47. {
  48. return;
  49. }
  50. if(pRoad->GetRoadNoavoidCount() == 0)
  51. {
  52. ui->lineEdit_s->setText("");
  53. ui->lineEdit_t->setText("");
  54. return;
  55. }
  56. if(index<0)return;
  57. if(index>=pRoad->GetRoadNoavoidCount())return;
  58. RoadNoavoid * pRoadNoavoid = pRoad->GetRoadNoavoid(index);
  59. if(pRoadNoavoid == NULL)
  60. {
  61. return;
  62. }
  63. ui->lineEdit_s->setText(QString::number(pRoadNoavoid->GetS()));
  64. ui->lineEdit_t->setText(QString::number(pRoadNoavoid->GetLength()));
  65. }
  66. void DialogRoadNoavoid::on_pushButton_Add_clicked()
  67. {
  68. Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
  69. if(pRoad == 0)
  70. {
  71. return;
  72. }
  73. if(ui->lineEdit_s->text().toStdString() == "")
  74. {
  75. QMessageBox::warning(this,"Warning","s is empty.",QMessageBox::YesAll);
  76. return;
  77. }
  78. if(ui->lineEdit_t->text().toStdString() == "")
  79. {
  80. QMessageBox::warning(this,"Warning","length is empty.",QMessageBox::YesAll);
  81. return;
  82. }
  83. double s = ui->lineEdit_s->text().toDouble();
  84. double length = ui->lineEdit_t->text().toDouble();
  85. pRoad->AddRoadNoavoid(s,length);
  86. on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex());
  87. }
  88. void DialogRoadNoavoid::on_pushButton_Delete_clicked()
  89. {
  90. Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
  91. if(pRoad == 0)
  92. {
  93. return;
  94. }
  95. pRoad->DeleteRoadNoavoid(ui->comboBox_Noavoid->currentIndex());
  96. on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex());
  97. }
  98. void DialogRoadNoavoid::on_pushButton_Change_clicked()
  99. {
  100. Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
  101. if(pRoad == NULL)
  102. {
  103. return;
  104. }
  105. RoadNoavoid * pRoadNoavoid = pRoad->GetRoadNoavoid(ui->comboBox_Noavoid->currentIndex());
  106. pRoadNoavoid->SetS(ui->lineEdit_s->text().toDouble());
  107. pRoadNoavoid->SetLength(ui->lineEdit_t->text().toDouble());
  108. QMessageBox::information(this,"Info","Change RoadNoavoid Successfully.",QMessageBox::YesAll);
  109. }