選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

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