You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

238 rivejä
8.7 KiB

  1. #include "ConnectorSelectWidget.h"
  2. #include <QPainter>
  3. #include "CableTestBenchDefs.h"
  4. CConnectorSelectWidget::CConnectorSelectWidget(QWidget *parent) :
  5. QWidget(parent)
  6. {
  7. mConnectorLayoutPixmap = new QPixmap("./images/connecteurs.png");
  8. mCurSelConnector = CConnectorDefs::UNKNOWN_CONNECTOR_TYPE;
  9. //Create click zones for all input connectors
  10. CConnectorClickZoneWidget *InputClickZoneHandle;
  11. //6 pins
  12. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_6_PINS_CONNECTOR_TYPE,this);
  13. InputClickZoneHandle->setGeometry(7,149,53,54);
  14. InputClickZoneHandle->show();
  15. InputClickZoneHandle->raise();
  16. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  17. mInputClickZoneList.append(InputClickZoneHandle);
  18. //14 pins
  19. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_14_PINS_CONNECTOR_TYPE,this);
  20. InputClickZoneHandle->setGeometry(7,23,53,54);
  21. InputClickZoneHandle->show();
  22. InputClickZoneHandle->raise();
  23. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  24. mInputClickZoneList.append(InputClickZoneHandle);
  25. //24 pins
  26. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_24_PINS_CONNECTOR_TYPE,this);
  27. InputClickZoneHandle->setGeometry(92,23,48,86);
  28. InputClickZoneHandle->show();
  29. InputClickZoneHandle->raise();
  30. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  31. mInputClickZoneList.append(InputClickZoneHandle);
  32. //72 pins
  33. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_72_PINS_CONNECTOR_TYPE,this);
  34. InputClickZoneHandle->setGeometry(92,149,47,120);
  35. InputClickZoneHandle->show();
  36. InputClickZoneHandle->raise();
  37. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  38. mInputClickZoneList.append(InputClickZoneHandle);
  39. //90 pins
  40. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_90_PINS_CONNECTOR_TYPE,this);
  41. InputClickZoneHandle->setGeometry(17,286,33,73);
  42. InputClickZoneHandle->show();
  43. InputClickZoneHandle->raise();
  44. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  45. mInputClickZoneList.append(InputClickZoneHandle);
  46. //108 pins
  47. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_108_PINS_CONNECTOR_TYPE,this);
  48. InputClickZoneHandle->setGeometry(92,308,47,149);
  49. InputClickZoneHandle->show();
  50. InputClickZoneHandle->raise();
  51. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  52. mInputClickZoneList.append(InputClickZoneHandle);
  53. //120 pins
  54. InputClickZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::INPUT_120_PINS_CONNECTOR_TYPE,this);
  55. InputClickZoneHandle->setGeometry(13,382,42,74);
  56. InputClickZoneHandle->show();
  57. InputClickZoneHandle->raise();
  58. connect(InputClickZoneHandle,SIGNAL(ConnectorZoneClicked(CConnectorClickZoneWidget*)),this,SLOT(InputConnectorZoneClicked(CConnectorClickZoneWidget*)));
  59. mInputClickZoneList.append(InputClickZoneHandle);
  60. //Create selection zones for all output connectors
  61. CConnectorClickZoneWidget *OutputSelectZoneHandle;
  62. //6 pins
  63. OutputSelectZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::OUTPUT_6_PINS_CONNECTOR_TYPE,this);
  64. OutputSelectZoneHandle->setGeometry(329,149,38,38);
  65. OutputSelectZoneHandle->show();
  66. OutputSelectZoneHandle->raise();
  67. mOutputSelectZoneList.append(OutputSelectZoneHandle);
  68. //14 pins
  69. OutputSelectZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::OUTPUT_14_PINS_CONNECTOR_TYPE,this);
  70. OutputSelectZoneHandle->setGeometry(327,23,41,42);
  71. OutputSelectZoneHandle->show();
  72. OutputSelectZoneHandle->raise();
  73. mOutputSelectZoneList.append(OutputSelectZoneHandle);
  74. //24 pins
  75. OutputSelectZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::OUTPUT_24_PINS_CONNECTOR_TYPE,this);
  76. OutputSelectZoneHandle->setGeometry(235,23,48,86);
  77. OutputSelectZoneHandle->show();
  78. OutputSelectZoneHandle->raise();
  79. mOutputSelectZoneList.append(OutputSelectZoneHandle);
  80. //72 pins
  81. OutputSelectZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::OUTPUT_72_PINS_CONNECTOR_TYPE,this);
  82. OutputSelectZoneHandle->setGeometry(235,149,46,121);
  83. OutputSelectZoneHandle->show();
  84. OutputSelectZoneHandle->raise();
  85. mOutputSelectZoneList.append(OutputSelectZoneHandle);
  86. //108 pins
  87. OutputSelectZoneHandle = new CConnectorClickZoneWidget(CConnectorDefs::OUTPUT_108_PINS_CONNECTOR_TYPE,this);
  88. OutputSelectZoneHandle->setGeometry(235,308,47,148);
  89. OutputSelectZoneHandle->show();
  90. OutputSelectZoneHandle->raise();
  91. mOutputSelectZoneList.append(OutputSelectZoneHandle);
  92. }
  93. void CConnectorSelectWidget::paintEvent(QPaintEvent *event)
  94. {
  95. QPainter painter(this);
  96. painter.drawPixmap(0,0,*mConnectorLayoutPixmap);
  97. QPen pen;
  98. // pen.setStyle(Qt::SolidLine);
  99. // pen.setWidth(10);
  100. // pen.setBrush(Qt::red);
  101. // painter.setPen(pen);
  102. //painter.drawRect(this->geometry());
  103. // painter.drawRect(QRect(7,149,53,54));
  104. }
  105. void CConnectorSelectWidget::InputConnectorZoneClicked(CConnectorClickZoneWidget *ConClickZone)
  106. {
  107. qDebug("Connector zone clicked: %d",ConClickZone->GetConnectorType());
  108. if(ConClickZone->IsConSelected() == true)
  109. {
  110. ClearAllConnectorsSelections();
  111. mCurSelConnector = CConnectorDefs::UNKNOWN_CONNECTOR_TYPE;
  112. }
  113. else
  114. {
  115. CConnectorClickZoneWidget *OutputSelZone = 0;
  116. switch(ConClickZone->GetConnectorType())
  117. {
  118. case CConnectorDefs::INPUT_6_PINS_CONNECTOR_TYPE:
  119. {
  120. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_6_PINS_CONNECTOR_TYPE);
  121. break;
  122. }
  123. case CConnectorDefs::INPUT_14_PINS_CONNECTOR_TYPE:
  124. {
  125. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_14_PINS_CONNECTOR_TYPE);
  126. break;
  127. }
  128. case CConnectorDefs::INPUT_24_PINS_CONNECTOR_TYPE:
  129. {
  130. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_24_PINS_CONNECTOR_TYPE);
  131. break;
  132. }
  133. case CConnectorDefs::INPUT_72_PINS_CONNECTOR_TYPE:
  134. {
  135. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_72_PINS_CONNECTOR_TYPE);
  136. break;
  137. }
  138. case CConnectorDefs::INPUT_90_PINS_CONNECTOR_TYPE:
  139. case CConnectorDefs::INPUT_108_PINS_CONNECTOR_TYPE:
  140. case CConnectorDefs::INPUT_120_PINS_CONNECTOR_TYPE:
  141. {
  142. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_108_PINS_CONNECTOR_TYPE);
  143. break;
  144. }
  145. default:
  146. {
  147. break;
  148. }
  149. }
  150. if(OutputSelZone != 0)
  151. {
  152. OutputSelZone->SelectConnector(true,Qt::darkGreen);
  153. }
  154. ConClickZone->SelectConnector();
  155. }
  156. }
  157. CConnectorSelectWidget::~CConnectorSelectWidget()
  158. {
  159. qDebug("Destroyed");
  160. for(int i = 0; i < mInputClickZoneList.size(); i++)
  161. {
  162. delete mInputClickZoneList.at(i);
  163. }
  164. mInputClickZoneList.clear();
  165. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  166. {
  167. delete mOutputSelectZoneList.at(i);
  168. }
  169. mOutputSelectZoneList.clear();
  170. }
  171. int CConnectorSelectWidget::ClearAllOutputConSelections()
  172. {
  173. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  174. {
  175. mOutputSelectZoneList.at(i)->ClearConnectorSelection();
  176. }
  177. return RET_OK;
  178. }
  179. int CConnectorSelectWidget::ClearAllInputConSelections()
  180. {
  181. for(int i = 0; i < mInputClickZoneList.size(); i++)
  182. {
  183. mInputClickZoneList.at(i)->ClearConnectorSelection();
  184. }
  185. return RET_OK;
  186. }
  187. int CConnectorSelectWidget::ClearAllConnectorsSelections()
  188. {
  189. ClearAllOutputConSelections();
  190. ClearAllInputConSelections();
  191. }
  192. CConnectorClickZoneWidget* CConnectorSelectWidget::FindOutputSelectionZone(CConnectorDefs::eConnectorType type)
  193. {
  194. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  195. {
  196. if(mOutputSelectZoneList.at(i)->GetConnectorType() == type)
  197. {
  198. return mOutputSelectZoneList.at(i);
  199. }
  200. }
  201. return 0;
  202. }