DeviceTempleteCreator.cpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. #include "DeviceTempleteCreator.h"
  2. DeviceTempleteCreator::DeviceTempleteCreator(QWidget* parent)
  3. {
  4. TAG_CAM_ROW_GROUP group;
  5. group.nColOffset = 0;
  6. group.nRowOffset = 0;
  7. group.nRowCameraCount = 0;
  8. group.nRowCameraIndex = 0;
  9. group.pNextIntersectGroup = nullptr;
  10. m_CameraRowGroupList.push_back(group);
  11. if (int(m_CameraRowGroupList.size()) != 0)
  12. m_pCurrentRowGroup = &m_CameraRowGroupList.back();
  13. else
  14. m_pCurrentRowGroup = nullptr;
  15. ChangeCurrentGroup(m_pCurrentRowGroup);
  16. ui.setupUi(this);
  17. ui.ComboBoxSelectRow->addItem("0");
  18. InitConnect();
  19. }
  20. DeviceTempleteCreator::~DeviceTempleteCreator()
  21. {
  22. }
  23. void DeviceTempleteCreator::InitConnect()
  24. {
  25. ui.lineEditColStartX->init(QString("0"), true, CAMERA_COL_OFFSET_MAX);
  26. ui.lineEditColStartX->SetEditTarget(m_pCurrentColumnCameraOffset);
  27. ui.lineEditRowStartY->init(QString("0"), true, CAMERA_ROW_OFFSET_MAX);
  28. ui.lineEditRowStartY->SetEditTarget(m_pCurrentRowCameraOffset);
  29. ui.LineEditRowCameraNum->init(QString("0"), true, CAMERA_ROW_NUM_MAX);
  30. ui.LineEditRowCameraNum->SetEditTarget(m_pCurrentCameraNumber);
  31. ui.LineEditRowCameraNum->setValidator(new QIntValidator(CAMERA_ROW_NUM_MIN, CAMERA_ROW_NUM_MAX, this));
  32. ui.lineEditRowIndex->init(QString("0"), true, CAMERA_ROW_NUM_MAX);
  33. ui.lineEditRowIndex->SetEditTarget(m_pCurrentCameraRowIndex);
  34. ui.lineEditRowIndex->setValidator(new QIntValidator(CAMERA_ROW_NUM_MIN, CAMERA_ROW_NUM_MAX, this));
  35. connect(ui.ComboBoxSelectRow, QOverload<int>::of(& QComboBox::currentIndexChanged), this, &DeviceTempleteCreator::OnComboBoxCurrentIndexChanged);
  36. connect(ui.PushButtonIncRow, &QPushButton::clicked, this, &DeviceTempleteCreator::OnAddRowButtonClicked);
  37. connect(ui.PushButtonDecRow,&QPushButton::clicked, this, &DeviceTempleteCreator::OnDeleteRowButtonClicked);
  38. connect(ui.LineEditRowCameraNum,&QLineEdit::textEdited, this, &DeviceTempleteCreator::OnRowCameraNumChanged);
  39. connect(ui.lineEditColStartX,&QLineEdit::textEdited, this, &DeviceTempleteCreator::OnColumnOffsetChanged);
  40. connect(ui.lineEditRowStartY,&QLineEdit::textEdited, this, &DeviceTempleteCreator::OnRowOffsetChanged);
  41. connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &DeviceTempleteCreator::close);
  42. connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &DeviceTempleteCreator::close);
  43. connect(ui.CheckCameraPoseHor,&QCheckBox::stateChanged, this, &DeviceTempleteCreator::OnHorCameraPosCheckBoxStateChanged);
  44. connect(ui.CheckCameraPoseVec,&QCheckBox::stateChanged, this, &DeviceTempleteCreator::OnVecCameraPosCheckBoxStateChanged);
  45. }
  46. void DeviceTempleteCreator::SetScene(CameraModifyScene* pScene)
  47. {
  48. m_pCameraModifyScene = pScene;
  49. ui.graphicsView->setScene(m_pCameraModifyScene);
  50. ui.graphicsView->setMouseTracking(true);
  51. ui.graphicsView->viewport()->rect().setRect(0, 0, CAMERA_SCENE_WIDTH, CAMERA_SCENE_HEIGHT);
  52. ui.graphicsView->setDragMode(ui.graphicsView->NoDrag);
  53. ui.graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  54. ui.graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  55. }
  56. void DeviceTempleteCreator::Excute()
  57. {
  58. show();
  59. }
  60. void DeviceTempleteCreator::OnComboBoxCurrentIndexChanged(int index)
  61. {
  62. int nListSize = m_CameraRowGroupList.size();
  63. //if (nListSize <= index)
  64. //{
  65. // while (nListSize <= index)
  66. // {
  67. // m_CameraRowGroupList.push_back(TAG_CAM_ROW_GROUP());
  68. // }
  69. // m_pCurrentRowGroup = &m_CameraRowGroupList.back();
  70. // m_pCurrentRowGroup->nRowCameraIndex = index;
  71. //}
  72. //else
  73. {
  74. std::list<TAG_CAM_ROW_GROUP>::iterator it = m_CameraRowGroupList.begin();
  75. for (int i = 0; i < index; i++)
  76. it++;
  77. m_nCurrentRowNum = index;
  78. m_pCurrentRowGroup = &(*it);
  79. ChangeCurrentGroup(m_pCurrentRowGroup);
  80. ui.lineEditColStartX->SetEditTarget(m_pCurrentColumnCameraOffset);
  81. ui.lineEditColStartX->setText(QString::number(m_pCurrentRowGroup->nColOffset));
  82. ui.lineEditRowStartY->SetEditTarget(m_pCurrentRowCameraOffset);
  83. ui.lineEditRowStartY->setText(QString::number(m_pCurrentRowGroup->nRowOffset));
  84. ui.LineEditRowCameraNum->SetEditTarget(m_pCurrentCameraNumber);
  85. ui.LineEditRowCameraNum->setText(QString::number(m_pCurrentRowGroup->nRowCameraCount));
  86. ui.lineEditRowIndex->SetEditTarget(m_pCurrentCameraRowIndex);
  87. ui.lineEditRowIndex->setText(QString::number(m_pCurrentRowGroup->nRowCameraIndex));
  88. }
  89. }
  90. void DeviceTempleteCreator::ChangeCurrentGroup(LPTAG_CAM_ROW_GROUP pCurrentGroup)
  91. {
  92. //init the current row camera offset
  93. m_pCurrentRowCameraOffset = &pCurrentGroup->nRowOffset;
  94. //init the current column camera offset
  95. m_pCurrentColumnCameraOffset = &pCurrentGroup->nColOffset;
  96. //init the current camera row index
  97. m_pCurrentCameraRowIndex = &pCurrentGroup->nRowCameraIndex;
  98. //init the current camera number
  99. m_pCurrentCameraNumber = &pCurrentGroup->nRowCameraCount;
  100. update();
  101. }
  102. void DeviceTempleteCreator::OnAddRowButtonClicked()
  103. {
  104. int nListSize = m_CameraRowGroupList.size();
  105. TAG_CAM_ROW_GROUP tagCamRowGroup;
  106. tagCamRowGroup.nRowCameraIndex = nListSize;
  107. m_CameraRowGroupList.push_back(tagCamRowGroup);
  108. m_pCurrentRowGroup = &m_CameraRowGroupList.back();
  109. ui.ComboBoxSelectRow->addItem(QString::number(nListSize));
  110. //ui.ComboBoxSelectRow->setCurrentIndex(nListSize);
  111. emit ui.ComboBoxSelectRow->currentIndexChanged(nListSize);
  112. }
  113. void DeviceTempleteCreator::OnDeleteRowButtonClicked()
  114. {
  115. int nCurrentDeleteIndex = m_pCurrentRowGroup->nRowCameraIndex;
  116. std::list<TAG_CAM_ROW_GROUP>::iterator it = m_CameraRowGroupList.begin();
  117. for (int i = 0; i < nCurrentDeleteIndex; i++)
  118. it++;
  119. m_CameraRowGroupList.erase(it);
  120. //reset the index in group
  121. int nListSize = m_CameraRowGroupList.size();
  122. it = m_CameraRowGroupList.begin();
  123. for (int i = 0; i < nListSize; i++)
  124. {
  125. it->nRowCameraIndex = i;
  126. }
  127. }
  128. void DeviceTempleteCreator::OnRowCameraNumChanged(const QString& text)
  129. {
  130. int nCameraNum = text.toInt();
  131. if(nCameraNum == *m_pCurrentCameraNumber)
  132. return;
  133. auto iter = m_CameraRowGroupList.begin();
  134. for (int index = 0; index < (m_CameraRowGroupList.size()-1); index++)
  135. iter++;
  136. m_pCurrentRowGroup = &(*iter);
  137. if (m_pCurrentRowGroup != nullptr)
  138. {
  139. for (int i = 0; i < m_pCurrentRowGroup->CameraItemGroup.size(); i++)
  140. {
  141. std::list<CameraItem>::iterator it = m_pCurrentRowGroup->CameraItemGroup.begin();
  142. //remove the camera item
  143. m_pCameraModifyScene->removeItem(&(*(it++)));
  144. }
  145. }
  146. //update the camera row item number
  147. m_pCurrentRowGroup->CameraItemGroup.clear();
  148. int nIndex = 0;
  149. while (nIndex < nCameraNum)
  150. {
  151. if (nIndex < *m_pCurrentCameraNumber)
  152. continue;
  153. else
  154. m_pCurrentRowGroup->CameraItemGroup.push_back(CameraItem());
  155. nIndex++;
  156. }
  157. //put all item in group in scene again
  158. std::list<CameraItem>::iterator it = m_pCurrentRowGroup->CameraItemGroup.begin();
  159. for (int i = 0; i < m_pCurrentRowGroup->CameraItemGroup.size(); i++)
  160. {
  161. it->nItemColIndex = i;
  162. it->nItemRowIndex = *m_pCurrentCameraRowIndex;
  163. //add the camera item
  164. m_pCameraModifyScene->addItem(&(*(it++)));
  165. }
  166. //update the camera number
  167. *m_pCurrentCameraNumber = nCameraNum;
  168. //emit the camera item modified signal£¬let the camera item group Rearrange
  169. emit m_pCameraModifyScene->CameraItemModified();
  170. }
  171. void DeviceTempleteCreator::OnRowOffsetChanged(const QString& text)
  172. {
  173. int nOffset = text.toInt();
  174. *m_pCurrentRowCameraOffset = nOffset;
  175. emit m_pCameraModifyScene->CameraItemModified();
  176. }
  177. void DeviceTempleteCreator::OnColumnOffsetChanged(const QString& text)
  178. {
  179. int nOffset = text.toInt();
  180. *m_pCurrentColumnCameraOffset = nOffset;
  181. emit m_pCameraModifyScene->CameraItemModified();
  182. }
  183. void DeviceTempleteCreator::closeEvent(QCloseEvent* event)
  184. {
  185. //updata the current group data
  186. //m_pCurrentRowGroup->nRowOffset = *m_pCurrentRowCameraOffset;
  187. //m_pCurrentRowGroup->nColOffset = *m_pCurrentColumnCameraOffset;
  188. //m_pCurrentRowGroup->nRowCameraIndex = *m_pCurrentCameraRowIndex;
  189. //m_pCurrentRowGroup->nRowCameraCount = *m_pCurrentCameraNumber;
  190. //carry on the close event
  191. QWidget::closeEvent(event);
  192. }
  193. void DeviceTempleteCreator::OnHorCameraPosCheckBoxStateChanged(int state)
  194. {
  195. if (ui.CheckCameraPoseHor->checkState())
  196. {
  197. ui.CheckCameraPoseVec->setChecked(false);
  198. }
  199. else if (!ui.CheckCameraPoseHor->checkState())
  200. {
  201. ui.CheckCameraPoseVec->setCheckable(true);
  202. }
  203. }
  204. void DeviceTempleteCreator::OnVecCameraPosCheckBoxStateChanged(int state)
  205. {
  206. if (ui.CheckCameraPoseVec->checkState())
  207. {
  208. ui.CheckCameraPoseHor->setChecked(false);
  209. }
  210. else if (!ui.CheckCameraPoseVec->checkState())
  211. {
  212. ui.CheckCameraPoseHor->setCheckable(true);
  213. }
  214. }