您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

232 行
8.7 KiB

  1. #include "ReportPage.h"
  2. #include "ui_ReportPage.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QString>
  6. #include "ZTStats.h"
  7. #include <QScrollBar>
  8. #include <QDesktopServices>
  9. CReportPage::CReportPage(QWidget *parent) :
  10. QWidget(parent),
  11. ui(new Ui::CReportPage)
  12. {
  13. ui->setupUi(this);
  14. ui->mReportStartDateEdit->setCalendarPopup(true);
  15. ui->mReportStartDateEdit->setDate(QDate::currentDate());
  16. ui->mReportStartDateEdit->setMaximumDate(QDate::currentDate());
  17. ui->mReportEndDateEdit->setCalendarPopup(true);
  18. ui->mReportEndDateEdit->setDate(QDate::currentDate());
  19. ui->mReportEndDateEdit->setMaximumDate(QDate::currentDate());
  20. ui->mReportFunctionFNChkBx->setCheckState(Qt::Checked);
  21. connect(ui->mGenerateReportBtn,&QPushButton::clicked,this,&CReportPage::GenerateReportBtnClicked);
  22. connect(ui->mSelectAllFuncZT1Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed);
  23. connect(ui->mSelectAllFuncZT2Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed);
  24. connect(ui->mSelectNoneFuncZT1Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed);
  25. connect(ui->mSelectNoneFuncZT2Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed);
  26. connect(ui->mOpenReportBtn,&QPushButton::clicked,this,&CReportPage::OpenReportBtnClicked);
  27. mTimeCounter = new QTimer;
  28. mTimeCounter->setSingleShot(false);
  29. mTimeCounter->setInterval(1000);
  30. // connect(mTimeCounter,&QTimer::timeout,this,&CReportPage::TimerExpired);
  31. connect(mTimeCounter,SIGNAL(timeout()),this,SLOT(TimerExpired()));
  32. ui->mTimerLable->setText("");
  33. ui->mOpenReportBtn->hide();
  34. ui->mReportPathLabel->hide();
  35. ui->mReportProgressBarr->setMinimum(0);
  36. ui->mReportProgressBarr->setMaximum(1);
  37. ui->mReportProgressBarr->setValue(0);
  38. }
  39. CReportPage::~CReportPage()
  40. {
  41. delete ui;
  42. delete mTimeCounter;
  43. }
  44. CReportConfigData CReportPage::GetReportFiltersConfig()
  45. {
  46. CReportConfigData FiltersConfig;
  47. FiltersConfig.mReportStartDate = ui->mReportStartDateEdit->date();
  48. FiltersConfig.mReportEndDate = ui->mReportEndDateEdit->date();
  49. FiltersConfig.mReportFilterIncludeFN = ui->mReportFunctionFNChkBx->isChecked();
  50. FiltersConfig.mReportfilterIncludePEQ1 = ui->mReportFunctionPEQ1ChkBx->isChecked();
  51. FiltersConfig.mReportfilterIncludePG = ui->mReportFunctionPGChkBx->isChecked();
  52. FiltersConfig.mReportfilterIncludeComptage1 = ui->mReportFunctionComptage_1ChkBx->isChecked();
  53. FiltersConfig.mReportfilterIncludePPE1 = ui->mReportFunctionPPE_1ChkBx->isChecked();
  54. FiltersConfig.mReportfilterIncludePPI1 = ui->mReportFunctionPPI_1ChkBx->isChecked();
  55. FiltersConfig.mReportfilterIncludeComptage2 = ui->mReportFunctionComptage_2ChkBx->isChecked();
  56. FiltersConfig.mReportfilterIncludePEQ2 = ui->mReportFunctionPEQ2ChkBx->isChecked();
  57. FiltersConfig.mReportfilterIncludePPE2 = ui->mReportFunctionPPE_2ChkBx->isChecked();
  58. FiltersConfig.mReportfilterIncludePPI2 = ui->mReportFunctionPPI_2ChkBx->isChecked();
  59. FiltersConfig.mReportStationAngrignon = ui->mReportStationAngrignonChkBx->isChecked();
  60. FiltersConfig.mReportStationBeaugrand = ui->mReportStationBeaugrandChkBx->isChecked();
  61. FiltersConfig.mReportStationBerri = ui->mReportStationBerriChkBx->isChecked();
  62. FiltersConfig.mReportStationBourassa = ui->mReportStationBourassaChkBx->isChecked();
  63. FiltersConfig.mReportStationLongueuil = ui->mReportStationLongueuilChkBx->isChecked();
  64. FiltersConfig.mReportStationMontmorency = ui->mReportStationMontmorencyChkBx->isChecked();
  65. FiltersConfig.mReportStationSnowdon = ui->mReportStationSnowdonChkBx->isChecked();
  66. FiltersConfig.mReportStationStMichel = ui->mReportStationStMichelChkBx->isChecked();
  67. FiltersConfig.mReportStationVertu = ui->mReportStationVertuChkBx->isChecked();
  68. FiltersConfig.mReportIncludeSansDeclZT1 = ui->mReportFunctionNoDecl1ChkBx->isChecked();
  69. FiltersConfig.mReportIncludeSansDeclZT2 = ui->mReportFunctionNoDecl2ChkBx->isChecked();
  70. return FiltersConfig;
  71. }
  72. void CReportPage::GenerateReportBtnClicked()
  73. {
  74. if(ui->mGenerateReportBtn->text() == "Annuler")
  75. {
  76. mProgramHandle->AbortReportCreationRequest();
  77. }
  78. else
  79. {
  80. //Sanity check first...
  81. CReportConfigData ConfigFilters = GetReportFiltersConfig();
  82. if(ConfigFilters.IsAnyFilterSelected() == false)
  83. {
  84. QMessageBox::critical(this,"Erreur","Vous devez sélectionner au moins 1 alarme à analyser");
  85. return;
  86. }
  87. if(ConfigFilters.IsAnyStationSelected() == false)
  88. {
  89. QMessageBox::critical(this,"Erreur","Vous devez sélectionner au moins 1 station");
  90. return;
  91. }
  92. if(ConfigFilters.IsDateRangeValid() == false)
  93. {
  94. QMessageBox::critical(this,"Erreur","Vous devez sélectionner une période valide (dates)");
  95. return;
  96. }
  97. QString ExcelFile = QFileDialog::getSaveFileName(this, tr("Fichier rapport"), QString(),tr("Excel (*.xlsx)"));
  98. // qDebug("%s",qPrintable(ExcelFile));
  99. if(ExcelFile.isEmpty())
  100. {
  101. return;
  102. }
  103. ClearProgressStatus();
  104. ui->mReportProgressBarr->setMinimum(0);
  105. ui->mReportProgressBarr->setMaximum(0);
  106. mProgressTime.setHMS(0,0,0,0);
  107. mTimeCounter->start();
  108. UpdateProgressStatus("Création du rapport en cours... ça peut être long!!!");
  109. ui->mGenerateReportBtn->setText("Annuler");
  110. mProgramHandle->GenerateReportRequest(ExcelFile,ConfigFilters);
  111. }
  112. }
  113. void CReportPage::UpdateProgressStatus(QString Status)
  114. {
  115. Status.append("\n");
  116. ui->mReportProgressTextEdit->setPlainText(ui->mReportProgressTextEdit->document()->toPlainText().append(Status));
  117. ui->mReportProgressTextEdit->verticalScrollBar()->setValue(ui->mReportProgressTextEdit->verticalScrollBar()->maximum());
  118. }
  119. void CReportPage::ClearProgressStatus()
  120. {
  121. ui->mReportProgressTextEdit->clear();
  122. ui->mReportProgressBarr->setMinimum(0);
  123. ui->mReportProgressBarr->setMaximum(1);
  124. ui->mReportProgressBarr->setValue(0);
  125. }
  126. void CReportPage::ReportCreationFinished(QString ReportFilePath)
  127. {
  128. // ClearProgressStatus();
  129. ui->mReportProgressBarr->setMinimum(0);
  130. ui->mReportProgressBarr->setMaximum(1);
  131. ui->mReportProgressBarr->setValue(0);
  132. ui->mGenerateReportBtn->setText("Générer Rapport");
  133. mTimeCounter->stop();
  134. if(ReportFilePath.isEmpty() == false)
  135. {
  136. mReportFilePath = ReportFilePath;
  137. ui->mReportPathLabel->setText(ReportFilePath);
  138. ui->mReportPathLabel->show();
  139. ui->mOpenReportBtn->show();
  140. }
  141. }
  142. void CReportPage::TimerExpired()
  143. {
  144. mProgressTime = mProgressTime.addSecs(1);
  145. ui->mTimerLable->setText(mProgressTime.toString("hh:mm:ss"));
  146. }
  147. void CReportPage::FunctionSelectionBtnPressed()
  148. {
  149. QObject *CallerBtn = sender();
  150. if(CallerBtn == ui->mSelectAllFuncZT1Btn)
  151. {
  152. ui->mReportFunctionFNChkBx->setCheckState(Qt::Checked);
  153. ui->mReportFunctionPEQ1ChkBx->setCheckState(Qt::Checked);
  154. ui->mReportFunctionPGChkBx->setCheckState(Qt::Checked);
  155. ui->mReportFunctionComptage_1ChkBx->setCheckState(Qt::Checked);
  156. ui->mReportFunctionPPI_1ChkBx->setCheckState(Qt::Checked);
  157. ui->mReportFunctionPPE_1ChkBx->setCheckState(Qt::Checked);
  158. }
  159. else if(CallerBtn == ui->mSelectAllFuncZT2Btn)
  160. {
  161. ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Checked);
  162. ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Checked);
  163. ui->mReportFunctionPEQ2ChkBx->setCheckState(Qt::Checked);
  164. ui->mReportFunctionPPE_2ChkBx->setCheckState(Qt::Checked);
  165. ui->mReportFunctionPPI_2ChkBx->setCheckState(Qt::Checked);
  166. }
  167. else if(CallerBtn == ui->mSelectNoneFuncZT1Btn)
  168. {
  169. ui->mReportFunctionFNChkBx->setCheckState(Qt::Unchecked);
  170. ui->mReportFunctionPEQ1ChkBx->setCheckState(Qt::Unchecked);
  171. ui->mReportFunctionPGChkBx->setCheckState(Qt::Unchecked);
  172. ui->mReportFunctionComptage_1ChkBx->setCheckState(Qt::Unchecked);
  173. ui->mReportFunctionPPI_1ChkBx->setCheckState(Qt::Unchecked);
  174. ui->mReportFunctionPPE_1ChkBx->setCheckState(Qt::Unchecked);
  175. }
  176. else if(CallerBtn == ui->mSelectNoneFuncZT2Btn)
  177. {
  178. ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Unchecked);
  179. ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Unchecked);
  180. ui->mReportFunctionPEQ2ChkBx->setCheckState(Qt::Unchecked);
  181. ui->mReportFunctionPPE_2ChkBx->setCheckState(Qt::Unchecked);
  182. ui->mReportFunctionPPI_2ChkBx->setCheckState(Qt::Unchecked);
  183. }
  184. }
  185. void CReportPage::OpenReportBtnClicked()
  186. {
  187. // system(qPrintable(mReportFilePath));
  188. // QProcess::execute(mReportFilePath);
  189. QDesktopServices::openUrl(QUrl::fromLocalFile(mReportFilePath));
  190. }