#include "ReportPage.h" #include "ui_ReportPage.h" #include #include #include #include "ZTStats.h" #include #include CReportPage::CReportPage(QWidget *parent) : QWidget(parent), ui(new Ui::CReportPage) { ui->setupUi(this); ui->mReportStartDateEdit->setCalendarPopup(true); ui->mReportStartDateEdit->setDate(QDate::currentDate()); ui->mReportStartDateEdit->setMaximumDate(QDate::currentDate()); ui->mReportEndDateEdit->setCalendarPopup(true); ui->mReportEndDateEdit->setDate(QDate::currentDate()); ui->mReportEndDateEdit->setMaximumDate(QDate::currentDate()); ui->mReportFunctionFNChkBx->setCheckState(Qt::Checked); connect(ui->mGenerateReportBtn,&QPushButton::clicked,this,&CReportPage::GenerateReportBtnClicked); connect(ui->mSelectAllFuncZT1Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed); connect(ui->mSelectAllFuncZT2Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed); connect(ui->mSelectNoneFuncZT1Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed); connect(ui->mSelectNoneFuncZT2Btn,&QPushButton::clicked,this,&CReportPage::FunctionSelectionBtnPressed); connect(ui->mOpenReportBtn,&QPushButton::clicked,this,&CReportPage::OpenReportBtnClicked); mTimeCounter = new QTimer; mTimeCounter->setSingleShot(false); mTimeCounter->setInterval(1000); // connect(mTimeCounter,&QTimer::timeout,this,&CReportPage::TimerExpired); connect(mTimeCounter,SIGNAL(timeout()),this,SLOT(TimerExpired())); ui->mTimerLable->setText(""); ui->mOpenReportBtn->hide(); ui->mReportPathLabel->hide(); ui->mReportProgressBarr->setMinimum(0); ui->mReportProgressBarr->setMaximum(1); ui->mReportProgressBarr->setValue(0); } CReportPage::~CReportPage() { delete ui; delete mTimeCounter; } CReportConfigData CReportPage::GetReportFiltersConfig() { CReportConfigData FiltersConfig; FiltersConfig.mReportStartDate = ui->mReportStartDateEdit->date(); FiltersConfig.mReportEndDate = ui->mReportEndDateEdit->date(); FiltersConfig.mReportFilterIncludeFN = ui->mReportFunctionFNChkBx->isChecked(); FiltersConfig.mReportfilterIncludePEQ1 = ui->mReportFunctionPEQ1ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePG = ui->mReportFunctionPGChkBx->isChecked(); FiltersConfig.mReportfilterIncludeComptage1 = ui->mReportFunctionComptage_1ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePPE1 = ui->mReportFunctionPPE_1ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePPI1 = ui->mReportFunctionPPI_1ChkBx->isChecked(); FiltersConfig.mReportfilterIncludeComptage2 = ui->mReportFunctionComptage_2ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePEQ2 = ui->mReportFunctionPEQ2ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePPE2 = ui->mReportFunctionPPE_2ChkBx->isChecked(); FiltersConfig.mReportfilterIncludePPI2 = ui->mReportFunctionPPI_2ChkBx->isChecked(); FiltersConfig.mReportStationAngrignon = ui->mReportStationAngrignonChkBx->isChecked(); FiltersConfig.mReportStationBeaugrand = ui->mReportStationBeaugrandChkBx->isChecked(); FiltersConfig.mReportStationBerri = ui->mReportStationBerriChkBx->isChecked(); FiltersConfig.mReportStationBourassa = ui->mReportStationBourassaChkBx->isChecked(); FiltersConfig.mReportStationLongueuil = ui->mReportStationLongueuilChkBx->isChecked(); FiltersConfig.mReportStationMontmorency = ui->mReportStationMontmorencyChkBx->isChecked(); FiltersConfig.mReportStationSnowdon = ui->mReportStationSnowdonChkBx->isChecked(); FiltersConfig.mReportStationStMichel = ui->mReportStationStMichelChkBx->isChecked(); FiltersConfig.mReportStationVertu = ui->mReportStationVertuChkBx->isChecked(); FiltersConfig.mReportIncludeSansDeclZT1 = ui->mReportFunctionNoDecl1ChkBx->isChecked(); FiltersConfig.mReportIncludeSansDeclZT2 = ui->mReportFunctionNoDecl2ChkBx->isChecked(); return FiltersConfig; } void CReportPage::GenerateReportBtnClicked() { if(ui->mGenerateReportBtn->text() == "Annuler") { mProgramHandle->AbortReportCreationRequest(); } else { //Sanity check first... CReportConfigData ConfigFilters = GetReportFiltersConfig(); if(ConfigFilters.IsAnyFilterSelected() == false) { QMessageBox::critical(this,"Erreur","Vous devez sélectionner au moins 1 alarme à analyser"); return; } if(ConfigFilters.IsAnyStationSelected() == false) { QMessageBox::critical(this,"Erreur","Vous devez sélectionner au moins 1 station"); return; } if(ConfigFilters.IsDateRangeValid() == false) { QMessageBox::critical(this,"Erreur","Vous devez sélectionner une période valide (dates)"); return; } QString ExcelFile = QFileDialog::getSaveFileName(this, tr("Fichier rapport"), QString(),tr("Excel (*.xlsx)")); // qDebug("%s",qPrintable(ExcelFile)); if(ExcelFile.isEmpty()) { return; } ClearProgressStatus(); ui->mReportProgressBarr->setMinimum(0); ui->mReportProgressBarr->setMaximum(0); mProgressTime.setHMS(0,0,0,0); mTimeCounter->start(); UpdateProgressStatus("Création du rapport en cours... ça peut être long!!!"); ui->mGenerateReportBtn->setText("Annuler"); mProgramHandle->GenerateReportRequest(ExcelFile,ConfigFilters); } } void CReportPage::UpdateProgressStatus(QString Status) { Status.append("\n"); ui->mReportProgressTextEdit->setPlainText(ui->mReportProgressTextEdit->document()->toPlainText().append(Status)); ui->mReportProgressTextEdit->verticalScrollBar()->setValue(ui->mReportProgressTextEdit->verticalScrollBar()->maximum()); } void CReportPage::ClearProgressStatus() { ui->mReportProgressTextEdit->clear(); ui->mReportProgressBarr->setMinimum(0); ui->mReportProgressBarr->setMaximum(1); ui->mReportProgressBarr->setValue(0); } void CReportPage::ReportCreationFinished(QString ReportFilePath) { // ClearProgressStatus(); ui->mReportProgressBarr->setMinimum(0); ui->mReportProgressBarr->setMaximum(1); ui->mReportProgressBarr->setValue(0); ui->mGenerateReportBtn->setText("Générer Rapport"); mTimeCounter->stop(); if(ReportFilePath.isEmpty() == false) { mReportFilePath = ReportFilePath; ui->mReportPathLabel->setText(ReportFilePath); ui->mReportPathLabel->show(); ui->mOpenReportBtn->show(); } } void CReportPage::TimerExpired() { mProgressTime = mProgressTime.addSecs(1); ui->mTimerLable->setText(mProgressTime.toString("hh:mm:ss")); } void CReportPage::FunctionSelectionBtnPressed() { QObject *CallerBtn = sender(); if(CallerBtn == ui->mSelectAllFuncZT1Btn) { ui->mReportFunctionFNChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPEQ1ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPGChkBx->setCheckState(Qt::Checked); ui->mReportFunctionComptage_1ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPPI_1ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPPE_1ChkBx->setCheckState(Qt::Checked); } else if(CallerBtn == ui->mSelectAllFuncZT2Btn) { ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPEQ2ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPPE_2ChkBx->setCheckState(Qt::Checked); ui->mReportFunctionPPI_2ChkBx->setCheckState(Qt::Checked); } else if(CallerBtn == ui->mSelectNoneFuncZT1Btn) { ui->mReportFunctionFNChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPEQ1ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPGChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionComptage_1ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPPI_1ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPPE_1ChkBx->setCheckState(Qt::Unchecked); } else if(CallerBtn == ui->mSelectNoneFuncZT2Btn) { ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionComptage_2ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPEQ2ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPPE_2ChkBx->setCheckState(Qt::Unchecked); ui->mReportFunctionPPI_2ChkBx->setCheckState(Qt::Unchecked); } } void CReportPage::OpenReportBtnClicked() { // system(qPrintable(mReportFilePath)); // QProcess::execute(mReportFilePath); QDesktopServices::openUrl(QUrl::fromLocalFile(mReportFilePath)); }