Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

307 wiersze
9.1 KiB

  1. #include "CableTestPage.h"
  2. #include "ui_CableTestPage.h"
  3. #include "CableTestBench.h"
  4. #include <QTextCodec>
  5. #include "CableParametersData.h"
  6. #include <QScrollBar>
  7. CCableTestPage::CCableTestPage(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::CCableTestPage)
  10. {
  11. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
  12. ui->setupUi(this);
  13. mProgramHandle = 0;
  14. ui->mStationNameCombo->insertItem(0,"Frontenac",QVariant("1S52"));
  15. ui->mStationNameCombo->insertItem(1,"Côte-Vertu",QVariant("2S22"));
  16. ui->mStationNameCombo->insertItem(2,"Angrignon",QVariant("1S18"));
  17. ui->mStationNameCombo->insertItem(3,"Garage Angrignon",QVariant("1G17"));
  18. ui->mStationNameCombo->insertItem(4,"Atwater",QVariant("1S34"));
  19. ui->mStationNameCombo->insertItem(5,"Lionel-Groulx",QVariant("1S32"));
  20. ui->mStationNameCombo->insertItem(6,"Viau",QVariant("1S60"));
  21. mInspectionNotDonePixmap = QPixmap("./images/todo.png").scaled(ui->mInspectionDoneIcon->geometry().width(),ui->mInspectionDoneIcon->geometry().height());
  22. mInspectionDonePixmap = QPixmap("./images/done1.png").scaled(ui->mInspectionDoneIcon->geometry().width(),ui->mInspectionDoneIcon->geometry().height());
  23. ui->mInspectionDoneIcon->setPixmap(mInspectionNotDonePixmap);
  24. connect(ui->mExecInspVisuelleBtn,SIGNAL(clicked()),this,SLOT(InspVisuelleBtnClicked()));
  25. connect(ui->mConnectorSelectWidget,SIGNAL(ConnectorSelected(CConnectorDefs::eConnectorType)),this,SLOT(ConnectorSelectionChanged(CConnectorDefs::eConnectorType)));
  26. ui->mInputTestVisualisationWidget->SetConnectorPinCount(0);
  27. ui->mOutputTestVisualisationWidget->SetConnectorPinCount(0);
  28. ui->mVisualInspStepChkBx->setCheckable(false);
  29. mGuiRefreshTimer.setSingleShot(false);
  30. mGuiRefreshTimer.setInterval(200);
  31. connect(ui->mStartTestBtn,SIGNAL(clicked()),this,SLOT(StartTestBtnClicked()));
  32. connect(ui->mReinitTestBtn,SIGNAL(clicked()),this,SLOT(ResetTestBtnClicked()));
  33. connect(ui->mNewCableBtn,SIGNAL(clicked()),this,SLOT(NewCableBtnClicked()));
  34. connect(ui->mStartManualTestBtn,SIGNAL(clicked()),this,SLOT(StartManualTestBtnClicked()));
  35. connect(ui->mOutputTestVisualisationWidget,SIGNAL(PinClicked(int)),this,SLOT(OutputConnectorPinClicked(int)));
  36. connect(&mGuiRefreshTimer,SIGNAL(timeout()),this,SLOT(GuiRefreshTimerExpired()));
  37. connect(ui->mSaveReportBtn,SIGNAL(clicked()),this,SLOT(SaveReportBtnClicked()));
  38. connect(ui->mOpenReportBtn,SIGNAL(clicked()),this,SLOT(OpenReportBtnClicked()));
  39. mDefaultCableName = "CABLE_XX_NO_AA_BB.c";
  40. mDefaultInspectorName = "JFMartel";
  41. ui->mStartTestBtn->setEnabled(false);
  42. ui->mStartManualTestBtn->setEnabled(false);
  43. ui->mOutputTestVisualisationWidget->DisablePinClicks();
  44. // ui->mOpenReportBtn->setEnabled(false);
  45. ResetCable();
  46. }
  47. CCableTestPage::~CCableTestPage()
  48. {
  49. delete ui;
  50. }
  51. void CCableTestPage::InspVisuelleBtnClicked()
  52. {
  53. mProgramHandle->ExecVisualInspectionRequest();
  54. }
  55. int CCableTestPage::SetVisualInspectionDone(bool Done)
  56. {
  57. if(Done)
  58. {
  59. ui->mInspectionDoneIcon->setPixmap(mInspectionDonePixmap);
  60. ui->mExecInspVisuelleBtn->setText(QString("Réviser Inspection").toUtf8());
  61. ui->mVisualInspStepChkBx->setCheckable(true);
  62. ui->mVisualInspStepChkBx->setChecked(true);
  63. ui->mVisualInspStepChkBx->setCheckable(false);
  64. }
  65. else
  66. {
  67. ui->mInspectionDoneIcon->setPixmap(mInspectionNotDonePixmap);
  68. ui->mExecInspVisuelleBtn->setText("Effectuer Inspection");
  69. ui->mVisualInspStepChkBx->setChecked(false);
  70. }
  71. return RET_OK;
  72. }
  73. void CCableTestPage::ConnectorSelectionChanged(CConnectorDefs::eConnectorType ConType)
  74. {
  75. CCable* Cable;
  76. Cable = mProgramHandle->SetSelectedConnector(ConType);
  77. if(Cable != 0)
  78. {
  79. ui->mInputTestVisualisationWidget->SetConnectorPinCount(Cable->GetInputConnector()->GetPinCount());
  80. ui->mOutputTestVisualisationWidget->SetConnectorPinCount(Cable->GetOutputConnector()->GetPinCount());
  81. }
  82. }
  83. void CCableTestPage::StartTestBtnClicked()
  84. {
  85. mProgramHandle->StartPauseAutomaticTestRequest();
  86. }
  87. void CCableTestPage::StartManualTestBtnClicked()
  88. {
  89. mProgramHandle->StartStopManualTestRequest();
  90. }
  91. void CCableTestPage::ResetTestBtnClicked()
  92. {
  93. mProgramHandle->ResetAutomaticTestRequest();
  94. }
  95. void CCableTestPage::NewCableBtnClicked()
  96. {
  97. mProgramHandle->NewCableRequest();
  98. }
  99. int CCableTestPage::ResetCable()
  100. {
  101. //reset pins state visualization area
  102. ui->mInputTestVisualisationWidget->ClearConnectorsLists();
  103. ui->mOutputTestVisualisationWidget->ClearConnectorsLists();
  104. //Reset cable config zone
  105. ui->mIdentCableEditBox->setText(mDefaultCableName);
  106. ui->mNomTesteurEditBox->setText(mDefaultInspectorName);
  107. //Reset Inspection Visuelle result (main program will clear the form)
  108. SetVisualInspectionDone(false);
  109. //Clear connector selection zone
  110. ui->mConnectorSelectWidget->ClearAllConnectorsSelections();
  111. ui->mTestLogTextBox->clear();
  112. ui->mSaveReportBtn->setEnabled(false);
  113. ui->mOpenReportBtn->setEnabled(false);
  114. SetAutoTestResult("");
  115. return RET_OK;
  116. }
  117. int CCableTestPage::EnableStartTestBtn()
  118. {
  119. ui->mStartTestBtn->setEnabled(true);
  120. ui->mStartManualTestBtn->setEnabled(true);
  121. return RET_OK;
  122. }
  123. int CCableTestPage::DisableStartTestBtn()
  124. {
  125. ui->mStartTestBtn->setEnabled(false);
  126. ui->mStartManualTestBtn->setEnabled(false);
  127. return RET_OK;
  128. }
  129. int CCableTestPage::CableAutomaticTestStarted()
  130. {
  131. ui->mStartManualTestBtn->setEnabled(false);
  132. DisableGuiForTest();
  133. ui->mStartTestBtn->setText("Interrompre Test");
  134. SetAutoTestResult("En Cours...",Qt::black);
  135. return RET_OK;
  136. }
  137. int CCableTestPage::CableAutomaticTestPaused()
  138. {
  139. ui->mStartTestBtn->setText("Reprendre Test");
  140. return RET_OK;
  141. }
  142. int CCableTestPage::CableTestEnded()
  143. {
  144. EnableGuiAfterTest();
  145. ui->mOutputTestVisualisationWidget->DisablePinClicks();
  146. ui->mStartManualTestBtn->setEnabled(true);
  147. ui->mStartTestBtn->setEnabled(true);
  148. ui->mStartTestBtn->setText("Démarrer Test");
  149. ui->mStartManualTestBtn->setText("Démarrer");
  150. ui->mReinitTestBtn->setEnabled(true);
  151. ui->mSaveReportBtn->setEnabled(true);
  152. return RET_OK;
  153. }
  154. int CCableTestPage::CableManualTestStarted()
  155. {
  156. ui->mStartTestBtn->setEnabled(false);
  157. ui->mOutputTestVisualisationWidget->EnablePinClicks();
  158. DisableGuiForTest();
  159. ui->mStartManualTestBtn->setText("Terminer");
  160. ui->mReinitTestBtn->setEnabled(false);
  161. ui->mSaveReportBtn->setEnabled(false);
  162. return RET_OK;
  163. }
  164. int CCableTestPage::DisableGuiForTest()
  165. {
  166. ui->mNewCableBtn->setEnabled(false);
  167. ui->mConnectorSelectWidget->setEnabled(false);
  168. ui->mIdentCableEditBox->setEnabled(false);
  169. ui->mExecInspVisuelleBtn->setEnabled(false);
  170. ui->mNomTesteurEditBox->setEnabled(false);
  171. ui->mTypeCableCombo->setEnabled(false);
  172. ui->mStationNameCombo->setEnabled(false);
  173. return RET_OK;
  174. }
  175. int CCableTestPage::EnableGuiAfterTest()
  176. {
  177. ui->mNewCableBtn->setEnabled(true);
  178. ui->mConnectorSelectWidget->setEnabled(true);
  179. ui->mIdentCableEditBox->setEnabled(true);
  180. ui->mExecInspVisuelleBtn->setEnabled(true);
  181. ui->mNomTesteurEditBox->setEnabled(true);
  182. ui->mTypeCableCombo->setEnabled(true);
  183. ui->mStationNameCombo->setEnabled(true);
  184. return RET_OK;
  185. }
  186. void CCableTestPage::OutputConnectorPinClicked(int PinNbr)
  187. {
  188. mProgramHandle->ManualPinToggleRequest(PinNbr);
  189. }
  190. void CCableTestPage::GuiRefreshTimerExpired()
  191. {
  192. mProgramHandle->RefreshConnectorsStateRequest();
  193. }
  194. int CCableTestPage::SetOutputConnectorState(QBitArray PinStates)
  195. {
  196. return ui->mOutputTestVisualisationWidget->SetConnectorPinStates(PinStates);
  197. }
  198. int CCableTestPage::SetInputConnectorState(QBitArray PinStates)
  199. {
  200. return ui->mInputTestVisualisationWidget->SetConnectorPinStates(PinStates);
  201. }
  202. void CCableTestPage::showEvent(QShowEvent *event)
  203. {
  204. qDebug("Refresh timer started");
  205. mGuiRefreshTimer.start();
  206. }
  207. void CCableTestPage::hideEvent(QHideEvent *event)
  208. {
  209. qDebug("Refresh timer stopped");
  210. mGuiRefreshTimer.stop();
  211. }
  212. int CCableTestPage::FillReportCableParametersData(CCableParametersData *ReportPtr)
  213. {
  214. ReportPtr->SetCableParams(ui->mStationNameCombo->currentText(),
  215. ui->mStationNameCombo->itemData(ui->mStationNameCombo->currentIndex()).toString(),
  216. ui->mIdentCableEditBox->text(),
  217. ui->mTypeCableCombo->currentText(),
  218. ui->mNomTesteurEditBox->text());
  219. return RET_OK;
  220. }
  221. void CCableTestPage::AddTestLogEntry(QString Entry)
  222. {
  223. ui->mTestLogTextBox->insertPlainText(Entry);
  224. ui->mTestLogTextBox->verticalScrollBar()->setValue(ui->mTestLogTextBox->verticalScrollBar()->maximum());
  225. }
  226. void CCableTestPage::SaveReportBtnClicked()
  227. {
  228. mProgramHandle->SaveReportRequest();
  229. }
  230. void CCableTestPage::OpenReportBtnClicked()
  231. {
  232. mProgramHandle->OpenReportRequest();
  233. }
  234. int CCableTestPage::EnableOpenReportBtn()
  235. {
  236. ui->mOpenReportBtn->setEnabled(true);
  237. return RET_OK;
  238. }
  239. int CCableTestPage::SetAutoTestResult(QString Result, QColor color)
  240. {
  241. QPalette pal;
  242. pal.setColor(QPalette::WindowText,color);
  243. ui->mAutoTestResultLabel->setPalette(pal);
  244. ui->mAutoTestResultLabel->setText(Result);
  245. return RET_OK;
  246. }