dialogroadobject_material.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #include "dialogroadobject_material.h"
  2. #include "ui_dialogroadobject_material.h"
  3. #include <QMessageBox>
  4. DialogRoadObject_material::DialogRoadObject_material(Object * pObject,QWidget *parent) :
  5. QDialog(parent),
  6. ui(new Ui::DialogRoadObject_material)
  7. {
  8. ui->setupUi(this);
  9. mpObject = pObject;
  10. UpdateList();
  11. setWindowTitle("Edit Object Material");
  12. }
  13. DialogRoadObject_material::~DialogRoadObject_material()
  14. {
  15. delete ui;
  16. }
  17. void DialogRoadObject_material::UpdateList()
  18. {
  19. ui->comboBox_material->clear();
  20. ui->lineEdit_friction->setText("");
  21. ui->lineEdit_surface->setText("");
  22. ui->lineEdit_roughness->setText("");
  23. if(mpObject == 0)return;
  24. Object * pObject = mpObject;
  25. if(pObject->GetObjectmaterialCount() == 0)return;
  26. unsigned int i;
  27. for(i=0;i<pObject->GetObjectmaterialCount();i++)
  28. {
  29. Object_material * pObject_material = pObject->GetObjectmaterial(i);
  30. if(pObject_material == 0)return;
  31. ui->comboBox_material->addItem("material"+QString::number(i));
  32. }
  33. }
  34. void DialogRoadObject_material::on_comboBox_material_currentIndexChanged(int index)
  35. {
  36. if(index<0)return;
  37. if(mpObject == 0)return;
  38. Object * pObject = mpObject;
  39. Object_material * pobject_material = pObject->GetObjectmaterial(index);
  40. string surface;
  41. double friction,roughness;
  42. if(pobject_material->Getsurface(surface) == 1)
  43. {
  44. ui->lineEdit_surface->setText(surface.data());
  45. }
  46. else
  47. {
  48. ui->lineEdit_surface->setText("");
  49. }
  50. if(pobject_material->Getfriction(friction) == 1)
  51. {
  52. ui->lineEdit_friction->setText(QString::number(friction));
  53. }
  54. else
  55. {
  56. ui->lineEdit_friction->setText("");
  57. }
  58. if(pobject_material->Getroughness(roughness) == 1)
  59. {
  60. ui->lineEdit_roughness->setText(QString::number(roughness));
  61. }
  62. else
  63. {
  64. ui->lineEdit_roughness->setText("");
  65. }
  66. }
  67. void DialogRoadObject_material::on_pushButton_Add_clicked()
  68. {
  69. if(mpObject == 0)
  70. {
  71. QMessageBox::warning(this,"Warning","Object is NULL.",QMessageBox::YesAll);
  72. return;
  73. }
  74. Object * pObject = mpObject;
  75. pObject->AddObjectmaterial();
  76. Object_material * pObject_material = pObject->GetLastAddedObjectmaterial();
  77. if(pObject_material == 0)return;
  78. if(ui->lineEdit_surface->text() != "")
  79. {
  80. string surface = ui->lineEdit_surface->text().toStdString();
  81. pObject_material->Setsurface(surface);
  82. }
  83. if(ui->lineEdit_friction->text() != "")
  84. {
  85. pObject_material->Setfriction(ui->lineEdit_friction->text().toDouble());
  86. }
  87. if(ui->lineEdit_roughness->text() != "")
  88. {
  89. pObject_material->Setroughness(ui->lineEdit_roughness->text().toDouble());
  90. }
  91. UpdateList();
  92. }
  93. void DialogRoadObject_material::on_pushButton_Delete_clicked()
  94. {
  95. if(mpObject == 0)
  96. {
  97. QMessageBox::warning(this,"Warning","Object is NULL.",QMessageBox::YesAll);
  98. return;
  99. }
  100. Object * pObject = mpObject;
  101. if(pObject->GetObjectmaterialCount() == 0)
  102. {
  103. QMessageBox::information(this,"Info","No material",QMessageBox::YesAll);
  104. return;
  105. }
  106. int index = ui->comboBox_material->currentIndex();
  107. pObject->DeleteObjectmaterial(index);
  108. UpdateList();
  109. }
  110. void DialogRoadObject_material::on_pushButton_Change_clicked()
  111. {
  112. if(mpObject == 0)
  113. {
  114. QMessageBox::warning(this,"Warning","Object is NULL.",QMessageBox::YesAll);
  115. return;
  116. }
  117. Object * pObject = mpObject;
  118. if(pObject->GetObjectmaterialCount() == 0)
  119. {
  120. QMessageBox::warning(this,"Warning","No material",QMessageBox::YesAll);
  121. return;
  122. }
  123. int index = ui->comboBox_material->currentIndex();
  124. Object_material * pObject_material = pObject->GetObjectmaterial(index);
  125. if(pObject_material == 0)return;
  126. if(ui->lineEdit_surface->text() != "")
  127. {
  128. string surface = ui->lineEdit_surface->text().toStdString();
  129. pObject_material->Setsurface(surface);
  130. }
  131. else
  132. {
  133. pObject_material->Clearsurface();
  134. }
  135. if(ui->lineEdit_friction->text() != "")
  136. {
  137. pObject_material->Setfriction(ui->lineEdit_friction->text().toDouble());
  138. }
  139. else
  140. {
  141. pObject_material->Clearfriction();
  142. }
  143. if(ui->lineEdit_roughness->text() != "")
  144. {
  145. pObject_material->Setroughness(ui->lineEdit_roughness->text().toDouble());
  146. }
  147. else
  148. {
  149. pObject_material->Clearroughness();
  150. }
  151. QMessageBox::information(this,"Info","Change Object Material Successfully.",QMessageBox::YesAll);
  152. UpdateList();
  153. ui->comboBox_material->setCurrentIndex(index);
  154. }