dialoglaneoffset.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "dialoglaneoffset.h"
  2. #include "ui_dialoglaneoffset.h"
  3. DialogLaneOffset::DialogLaneOffset(Road * pRoad,QWidget *parent) :
  4. QDialog(parent),
  5. ui(new Ui::DialogLaneOffset)
  6. {
  7. ui->setupUi(this);
  8. mpRoad = pRoad;
  9. if(mpRoad == NULL)return;
  10. unsigned int nlaneoffsetcount = mpRoad->GetLaneOffsetCount();
  11. unsigned int i;
  12. for(i=0;i<nlaneoffsetcount;i++)
  13. {
  14. LaneOffset * pLO = mpRoad->GetLaneOffset(i);
  15. ui->comboBox_laneoffset->addItem(QString::number(pLO->GetS()));
  16. }
  17. setWindowTitle(tr("Edit Lane Offset"));
  18. }
  19. DialogLaneOffset::~DialogLaneOffset()
  20. {
  21. delete ui;
  22. }
  23. void DialogLaneOffset::on_pushButton_AddLaneOffset_clicked()
  24. {
  25. double s,a,b,c,d;
  26. s = ui->lineEdit_s->text().toDouble();
  27. a = ui->lineEdit_a->text().toDouble();
  28. b = ui->lineEdit_b->text().toDouble();
  29. c = ui->lineEdit_c->text().toDouble();
  30. d = ui->lineEdit_d->text().toDouble();
  31. unsigned int nlaneoff = mpRoad->AddLaneOffset(s,a,b,c,d);
  32. UpdateCombo();
  33. ui->comboBox_laneoffset->setCurrentIndex(nlaneoff);
  34. }
  35. void DialogLaneOffset::UpdateCombo()
  36. {
  37. ui->comboBox_laneoffset->clear();
  38. unsigned int nlaneoffsetcount = mpRoad->GetLaneOffsetCount();
  39. unsigned int i;
  40. for(i=0;i<nlaneoffsetcount;i++)
  41. {
  42. LaneOffset * pLO = mpRoad->GetLaneOffset(i);
  43. ui->comboBox_laneoffset->addItem(QString::number(pLO->GetS()));
  44. }
  45. }
  46. void DialogLaneOffset::on_pushButton_DeleteLaneOffset_clicked()
  47. {
  48. unsigned int nlaneoffsetcount = mpRoad->GetLaneOffsetCount();
  49. if(nlaneoffsetcount < 1)return;
  50. unsigned int index = ui->comboBox_laneoffset->currentIndex();
  51. mpRoad->DeleteLaneOffset(index);
  52. UpdateCombo();
  53. }
  54. void DialogLaneOffset::on_pushButton_ChangeLaneOffset_clicked()
  55. {
  56. unsigned int nlaneoffsetcount = mpRoad->GetLaneOffsetCount();
  57. if(nlaneoffsetcount < 1)return;
  58. unsigned int index = ui->comboBox_laneoffset->currentIndex();
  59. LaneOffset * pLO = mpRoad->GetLaneOffset(index);
  60. if(pLO == NULL)return;
  61. double s,a,b,c,d;
  62. s = ui->lineEdit_s->text().toDouble();
  63. a = ui->lineEdit_a->text().toDouble();
  64. b = ui->lineEdit_b->text().toDouble();
  65. c = ui->lineEdit_c->text().toDouble();
  66. d = ui->lineEdit_d->text().toDouble();
  67. pLO->SetS(s);
  68. pLO->Seta(a);
  69. pLO->Setb(b);
  70. pLO->Setc(c);
  71. pLO->Setd(d);
  72. UpdateCombo();
  73. ui->comboBox_laneoffset->setCurrentIndex(index);
  74. }
  75. void DialogLaneOffset::on_comboBox_laneoffset_currentIndexChanged(int index)
  76. {
  77. unsigned int nlaneoffsetcount = mpRoad->GetLaneOffsetCount();
  78. if(nlaneoffsetcount < 1)return;
  79. if(index<0)return;
  80. LaneOffset * pLO = mpRoad->GetLaneOffset(index);
  81. if(pLO == NULL)return;
  82. ui->lineEdit_s->setText(QString::number(pLO->GetS()));
  83. ui->lineEdit_a->setText(QString::number(pLO->Geta()));
  84. ui->lineEdit_b->setText(QString::number(pLO->Getb()));
  85. ui->lineEdit_c->setText(QString::number(pLO->Getc()));
  86. ui->lineEdit_d->setText(QString::number(pLO->Getd()));
  87. }