25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

398 satır
12 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. ui->mStationNameCombo->insertItem(6,"Terminus Beaugrand",QVariant("1S70"));
  22. ui->mStationNameCombo->insertItem(6,"Bonaventure",QVariant("2S53"));
  23. ui->mStationNameCombo->insertItem(6,"Lionel-Groulx L2",QVariant("2S46"));
  24. ui->mStationNameCombo->insertItem(6,"Garage Bourassa",QVariant("2G81"));
  25. ui->mStationNameCombo->insertItem(6,"Garage Beaugrand",QVariant("1G71"));
  26. ui->mStationNameCombo->insertItem(6,"Longueuil",QVariant("4S54"));
  27. ui->mStationNameCombo->insertItem(6,"Berri L4 et L2-L4",QVariant("4S50"));
  28. mInspectionNotDonePixmap = QPixmap("./images/todo.png").scaled(ui->mInspectionDoneIcon->geometry().width(),ui->mInspectionDoneIcon->geometry().height());
  29. mInspectionDonePixmap = QPixmap("./images/done1.png").scaled(ui->mInspectionDoneIcon->geometry().width(),ui->mInspectionDoneIcon->geometry().height());
  30. ui->mInspectionDoneIcon->setPixmap(mInspectionNotDonePixmap);
  31. connect(ui->mExecInspVisuelleBtn,SIGNAL(clicked()),this,SLOT(InspVisuelleBtnClicked()));
  32. connect(ui->mConnectorSelectWidget,SIGNAL(ConnectorSelected(CConnectorDefs::eConnectorType)),this,SLOT(ConnectorSelectionChanged(CConnectorDefs::eConnectorType)));
  33. ui->mInputTestVisualisationWidget->SetConnectorPinCount(0);
  34. ui->mOutputTestVisualisationWidget->SetConnectorPinCount(0);
  35. mGuiRefreshTimer.setSingleShot(false);
  36. mGuiRefreshTimer.setInterval(200);
  37. connect(ui->mStartTestBtn,SIGNAL(clicked()),this,SLOT(StartTestBtnClicked()));
  38. connect(ui->mReinitTestBtn,SIGNAL(clicked()),this,SLOT(ResetTestBtnClicked()));
  39. connect(ui->mNewCableBtn,SIGNAL(clicked()),this,SLOT(NewCableBtnClicked()));
  40. connect(ui->mStartManualTestBtn,SIGNAL(clicked()),this,SLOT(StartManualTestBtnClicked()));
  41. connect(ui->mOutputTestVisualisationWidget,SIGNAL(PinClicked(int)),this,SLOT(OutputConnectorPinClicked(int)));
  42. connect(&mGuiRefreshTimer,SIGNAL(timeout()),this,SLOT(GuiRefreshTimerExpired()));
  43. connect(ui->mSaveReportBtn,SIGNAL(clicked()),this,SLOT(SaveReportBtnClicked()));
  44. connect(ui->mOpenReportBtn,SIGNAL(clicked()),this,SLOT(OpenReportBtnClicked()));
  45. connect(ui->mIdentCableEditBox,SIGNAL(textEdited(QString)),this,SLOT(CableConfigTextChanged()));
  46. connect(ui->mNomTesteurEditBox,SIGNAL(textEdited(QString)),this,SLOT(CableConfigTextChanged()));
  47. mDefaultCableName = "CABLE_XX_NO_AA_BB.c";
  48. mDefaultInspectorName = "JFMartel";
  49. ui->mStartTestBtn->setEnabled(false);
  50. ui->mStartManualTestBtn->setEnabled(false);
  51. ui->mOutputTestVisualisationWidget->DisablePinClicks();
  52. QPalette pal;
  53. pal.setColor(QPalette::WindowText,Qt::red);
  54. ui->mVisualInspectionStepLabel->setPalette(pal);
  55. ui->mVisualInspectionStepLabel->setText("2. Inspection visuelle: À FAIRE");
  56. ui->mCableIdentStepLabel->setPalette(pal);
  57. ui->mCableIdentStepLabel->setText("1. Identification du câble: À REMPLIR");
  58. ui->mConnectorSelStepLabel->setPalette(pal);
  59. ui->mConnectorSelStepLabel->setText("3. Sélection du connecteur d'entrée: À FAIRE");
  60. ResetCable();
  61. }
  62. CCableTestPage::~CCableTestPage()
  63. {
  64. delete ui;
  65. }
  66. void CCableTestPage::InspVisuelleBtnClicked()
  67. {
  68. mProgramHandle->ExecVisualInspectionRequest();
  69. }
  70. int CCableTestPage::SetVisualInspectionDone(bool Done)
  71. {
  72. if(Done)
  73. {
  74. ui->mInspectionDoneIcon->setPixmap(mInspectionDonePixmap);
  75. ui->mExecInspVisuelleBtn->setText(QString("Réviser\n Inspection").toUtf8());
  76. QPalette pal;
  77. pal.setColor(QPalette::WindowText,Qt::darkGreen);
  78. ui->mVisualInspectionStepLabel->setPalette(pal);
  79. ui->mVisualInspectionStepLabel->setText("2. Inspection visuelle: OK");
  80. }
  81. else
  82. {
  83. ui->mInspectionDoneIcon->setPixmap(mInspectionNotDonePixmap);
  84. ui->mExecInspVisuelleBtn->setText("Effectuer\n Inspection");
  85. QPalette pal;
  86. pal.setColor(QPalette::WindowText,Qt::red);
  87. ui->mVisualInspectionStepLabel->setPalette(pal);
  88. ui->mVisualInspectionStepLabel->setText("2. Inspection visuelle: À FAIRE");
  89. }
  90. return RET_OK;
  91. }
  92. int CCableTestPage::SetConnectorSelStep(bool done)
  93. {
  94. QPalette pal;
  95. if(done)
  96. {
  97. pal.setColor(QPalette::WindowText,Qt::darkGreen);
  98. ui->mConnectorSelStepLabel->setPalette(pal);
  99. ui->mConnectorSelStepLabel->setText("3. Sélection du connecteur d'entrée: OK");
  100. }
  101. else
  102. {
  103. pal.setColor(QPalette::WindowText,Qt::red);
  104. ui->mConnectorSelStepLabel->setPalette(pal);
  105. ui->mConnectorSelStepLabel->setText("3. Sélection du connecteur d'entrée: À FAIRE");
  106. }
  107. return RET_OK;
  108. }
  109. int CCableTestPage::SetCableConfigureStep(bool done)
  110. {
  111. QPalette pal;
  112. if(done)
  113. {
  114. pal.setColor(QPalette::WindowText,Qt::darkGreen);
  115. ui->mCableIdentStepLabel->setPalette(pal);
  116. ui->mCableIdentStepLabel->setText("1. Identification du câble: OK");
  117. }
  118. else
  119. {
  120. pal.setColor(QPalette::WindowText,Qt::red);
  121. ui->mCableIdentStepLabel->setPalette(pal);
  122. ui->mCableIdentStepLabel->setText("1. Identification du câble: À REMPLIR");
  123. }
  124. return RET_OK;
  125. }
  126. void CCableTestPage::ConnectorSelectionChanged(CConnectorDefs::eConnectorType ConType)
  127. {
  128. CCable* Cable;
  129. Cable = mProgramHandle->SetSelectedConnector(ConType);
  130. if(Cable != 0)
  131. {
  132. ui->mInputTestVisualisationWidget->SetConnectorPinCount(Cable->GetInputConnector()->GetPinCount());
  133. ui->mOutputTestVisualisationWidget->SetConnectorPinCount(Cable->GetOutputConnector()->GetPinCount());
  134. }
  135. }
  136. void CCableTestPage::StartTestBtnClicked()
  137. {
  138. mProgramHandle->StartPauseAutomaticTestRequest();
  139. }
  140. void CCableTestPage::StartManualTestBtnClicked()
  141. {
  142. mProgramHandle->StartStopManualTestRequest();
  143. }
  144. void CCableTestPage::ResetTestBtnClicked()
  145. {
  146. mProgramHandle->ResetAutomaticTestRequest();
  147. }
  148. void CCableTestPage::NewCableBtnClicked()
  149. {
  150. mProgramHandle->NewCableRequest();
  151. }
  152. int CCableTestPage::ResetCable()
  153. {
  154. //reset pins state visualization area
  155. ui->mInputTestVisualisationWidget->ClearConnectorsLists();
  156. ui->mOutputTestVisualisationWidget->ClearConnectorsLists();
  157. //Reset cable config zone
  158. // ui->mIdentCableEditBox->setText(mDefaultCableName);
  159. // ui->mNomTesteurEditBox->setText(mDefaultInspectorName);
  160. //Reset Inspection Visuelle result (main program will clear the form)
  161. SetVisualInspectionDone(false);
  162. // SetCableConfigureStep(false);
  163. SetConnectorSelStep(false);
  164. //Clear connector selection zone
  165. ui->mConnectorSelectWidget->ClearAllConnectorsSelections();
  166. ui->mTestLogTextBox->clear();
  167. ui->mSaveReportBtn->setEnabled(false);
  168. ui->mOpenReportBtn->setEnabled(false);
  169. SetAutoTestResult("");
  170. return RET_OK;
  171. }
  172. int CCableTestPage::EnableStartTestBtn()
  173. {
  174. ui->mStartTestBtn->setEnabled(true);
  175. ui->mStartManualTestBtn->setEnabled(true);
  176. return RET_OK;
  177. }
  178. int CCableTestPage::DisableStartTestBtn()
  179. {
  180. ui->mStartTestBtn->setEnabled(false);
  181. ui->mStartManualTestBtn->setEnabled(false);
  182. return RET_OK;
  183. }
  184. int CCableTestPage::CableAutomaticTestStarted()
  185. {
  186. ui->mStartManualTestBtn->setEnabled(false);
  187. DisableGuiForTest();
  188. ui->mStartTestBtn->setText("Interrompre Test");
  189. SetAutoTestResult("En Cours...",Qt::black);
  190. return RET_OK;
  191. }
  192. int CCableTestPage::CableAutomaticTestPaused()
  193. {
  194. ui->mStartTestBtn->setText("Reprendre Test");
  195. return RET_OK;
  196. }
  197. int CCableTestPage::CableTestEnded()
  198. {
  199. EnableGuiAfterTest();
  200. ui->mOutputTestVisualisationWidget->DisablePinClicks();
  201. ui->mStartManualTestBtn->setEnabled(true);
  202. ui->mStartTestBtn->setEnabled(true);
  203. ui->mStartTestBtn->setText("Démarrer Test");
  204. ui->mStartManualTestBtn->setText("Démarrer");
  205. ui->mReinitTestBtn->setEnabled(true);
  206. ui->mSaveReportBtn->setEnabled(true);
  207. return RET_OK;
  208. }
  209. int CCableTestPage::CableManualTestStarted()
  210. {
  211. ui->mStartTestBtn->setEnabled(false);
  212. ui->mOutputTestVisualisationWidget->EnablePinClicks();
  213. DisableGuiForTest();
  214. ui->mStartManualTestBtn->setText("Terminer");
  215. ui->mReinitTestBtn->setEnabled(false);
  216. ui->mSaveReportBtn->setEnabled(false);
  217. return RET_OK;
  218. }
  219. int CCableTestPage::DisableGuiForTest()
  220. {
  221. ui->mNewCableBtn->setEnabled(false);
  222. ui->mConnectorSelectWidget->setEnabled(false);
  223. ui->mIdentCableEditBox->setEnabled(false);
  224. ui->mExecInspVisuelleBtn->setEnabled(false);
  225. ui->mNomTesteurEditBox->setEnabled(false);
  226. ui->mTypeCableCombo->setEnabled(false);
  227. ui->mStationNameCombo->setEnabled(false);
  228. return RET_OK;
  229. }
  230. int CCableTestPage::EnableGuiAfterTest()
  231. {
  232. ui->mNewCableBtn->setEnabled(true);
  233. ui->mConnectorSelectWidget->setEnabled(true);
  234. ui->mIdentCableEditBox->setEnabled(true);
  235. ui->mExecInspVisuelleBtn->setEnabled(true);
  236. ui->mNomTesteurEditBox->setEnabled(true);
  237. ui->mTypeCableCombo->setEnabled(true);
  238. ui->mStationNameCombo->setEnabled(true);
  239. return RET_OK;
  240. }
  241. void CCableTestPage::OutputConnectorPinClicked(int PinNbr)
  242. {
  243. mProgramHandle->ManualPinToggleRequest(PinNbr);
  244. }
  245. void CCableTestPage::GuiRefreshTimerExpired()
  246. {
  247. mProgramHandle->RefreshConnectorsStateRequest();
  248. }
  249. int CCableTestPage::SetOutputConnectorState(QBitArray PinStates)
  250. {
  251. return ui->mOutputTestVisualisationWidget->SetConnectorPinStates(PinStates);
  252. }
  253. int CCableTestPage::SetInputConnectorState(QBitArray PinStates)
  254. {
  255. return ui->mInputTestVisualisationWidget->SetConnectorPinStates(PinStates);
  256. }
  257. void CCableTestPage::showEvent(QShowEvent *event)
  258. {
  259. qDebug("Refresh timer started");
  260. mGuiRefreshTimer.start();
  261. }
  262. void CCableTestPage::hideEvent(QHideEvent *event)
  263. {
  264. qDebug("Refresh timer stopped");
  265. mGuiRefreshTimer.stop();
  266. }
  267. int CCableTestPage::FillReportCableParametersData(CCableParametersData *ReportPtr)
  268. {
  269. ReportPtr->SetCableParams(ui->mStationNameCombo->currentText(),
  270. ui->mStationNameCombo->itemData(ui->mStationNameCombo->currentIndex()).toString(),
  271. ui->mIdentCableEditBox->text(),
  272. ui->mTypeCableCombo->currentText(),
  273. ui->mNomTesteurEditBox->text());
  274. return RET_OK;
  275. }
  276. void CCableTestPage::AddTestLogEntry(QString Entry)
  277. {
  278. ui->mTestLogTextBox->insertPlainText(Entry);
  279. ui->mTestLogTextBox->verticalScrollBar()->setValue(ui->mTestLogTextBox->verticalScrollBar()->maximum());
  280. }
  281. void CCableTestPage::SaveReportBtnClicked()
  282. {
  283. mProgramHandle->SaveReportRequest();
  284. }
  285. void CCableTestPage::OpenReportBtnClicked()
  286. {
  287. mProgramHandle->OpenReportRequest();
  288. }
  289. int CCableTestPage::EnableOpenReportBtn()
  290. {
  291. ui->mOpenReportBtn->setEnabled(true);
  292. return RET_OK;
  293. }
  294. int CCableTestPage::SetAutoTestResult(QString Result, QColor color)
  295. {
  296. QPalette pal;
  297. pal.setColor(QPalette::WindowText,color);
  298. ui->mAutoTestResultLabel->setPalette(pal);
  299. ui->mAutoTestResultLabel->setText(Result);
  300. return RET_OK;
  301. }
  302. bool CCableTestPage::IsCableConfigured()
  303. {
  304. if(ui->mIdentCableEditBox->text().isEmpty())
  305. {
  306. return false;
  307. }
  308. if(ui->mNomTesteurEditBox->text().isEmpty())
  309. {
  310. return false;
  311. }
  312. return true;
  313. }
  314. void CCableTestPage::CableConfigTextChanged()
  315. {
  316. mProgramHandle->CableConfigChanged();
  317. }