Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

244 rindas
8.8 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. return;
  113. }
  114. else
  115. {
  116. ClearAllConnectorsSelections();
  117. CConnectorClickZoneWidget *OutputSelZone = 0;
  118. switch(ConClickZone->GetConnectorType())
  119. {
  120. case CConnectorDefs::INPUT_6_PINS_CONNECTOR_TYPE:
  121. {
  122. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_6_PINS_CONNECTOR_TYPE);
  123. break;
  124. }
  125. case CConnectorDefs::INPUT_14_PINS_CONNECTOR_TYPE:
  126. {
  127. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_14_PINS_CONNECTOR_TYPE);
  128. break;
  129. }
  130. case CConnectorDefs::INPUT_24_PINS_CONNECTOR_TYPE:
  131. {
  132. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_24_PINS_CONNECTOR_TYPE);
  133. break;
  134. }
  135. case CConnectorDefs::INPUT_72_PINS_CONNECTOR_TYPE:
  136. {
  137. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_72_PINS_CONNECTOR_TYPE);
  138. break;
  139. }
  140. case CConnectorDefs::INPUT_90_PINS_CONNECTOR_TYPE:
  141. case CConnectorDefs::INPUT_108_PINS_CONNECTOR_TYPE:
  142. case CConnectorDefs::INPUT_120_PINS_CONNECTOR_TYPE:
  143. {
  144. OutputSelZone = FindOutputSelectionZone(CConnectorDefs::OUTPUT_108_PINS_CONNECTOR_TYPE);
  145. break;
  146. }
  147. default:
  148. {
  149. break;
  150. }
  151. }
  152. if(OutputSelZone != 0)
  153. {
  154. OutputSelZone->SelectConnector(true,Qt::darkGreen);
  155. }
  156. ConClickZone->SelectConnector();
  157. mCurSelConnector = ConClickZone->GetConnectorType();
  158. }
  159. emit ConnectorSelected(mCurSelConnector);
  160. }
  161. CConnectorSelectWidget::~CConnectorSelectWidget()
  162. {
  163. qDebug("Destroyed");
  164. for(int i = 0; i < mInputClickZoneList.size(); i++)
  165. {
  166. delete mInputClickZoneList.at(i);
  167. }
  168. mInputClickZoneList.clear();
  169. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  170. {
  171. delete mOutputSelectZoneList.at(i);
  172. }
  173. mOutputSelectZoneList.clear();
  174. }
  175. int CConnectorSelectWidget::ClearAllOutputConSelections()
  176. {
  177. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  178. {
  179. mOutputSelectZoneList.at(i)->ClearConnectorSelection();
  180. }
  181. return RET_OK;
  182. }
  183. int CConnectorSelectWidget::ClearAllInputConSelections()
  184. {
  185. for(int i = 0; i < mInputClickZoneList.size(); i++)
  186. {
  187. mInputClickZoneList.at(i)->ClearConnectorSelection();
  188. }
  189. return RET_OK;
  190. }
  191. int CConnectorSelectWidget::ClearAllConnectorsSelections()
  192. {
  193. ClearAllOutputConSelections();
  194. ClearAllInputConSelections();
  195. return RET_OK;
  196. }
  197. CConnectorClickZoneWidget* CConnectorSelectWidget::FindOutputSelectionZone(CConnectorDefs::eConnectorType type)
  198. {
  199. for(int i = 0; i < mOutputSelectZoneList.size(); i++)
  200. {
  201. if(mOutputSelectZoneList.at(i)->GetConnectorType() == type)
  202. {
  203. return mOutputSelectZoneList.at(i);
  204. }
  205. }
  206. return 0;
  207. }