#include "ConfigPage.h" #include "ui_ConfigPage.h" #include "LogsSorterConfigData.h" #include #include #include "LogsSorter.h" #include "LogsSorterConfigData.h" CConfigPage::CConfigPage(QWidget *parent) : QDialog(parent), ui(new Ui::CConfigPage) { ui->setupUi(this); // FILTRE="ZT1" #test de commentaire // TYPE="DÉPLACER" // DESCRIPTION="Zone Test 1 Terminus Beaugrand" // PREFIXE="HBGR" // DESTINATION="D:\Main\Fichiers\JOB\LogsDump\ZT Beaugrand" setAutoFillBackground(true); ui->mConfigTable->setAutoFillBackground(true); ui->mConfigTable->setColumnCount(7); ui->mConfigTable->setHorizontalHeaderLabels(QStringList() << "Filtre" << "Type" << "Préfixe" << "Description" << "Destination" << "Séparer\nRépertoires" << "Actif"); ui->mConfigTable->setSelectionBehavior(QAbstractItemView::SelectRows); ui->mConfigTable->horizontalHeaderItem(0)->setToolTip("Permet de déterminer le fichier LOG\nPar exemple 'BooleanData' identifie un fichier SEI\nUn fichier ne contenant aucun filtre dans son titre sera ignoré"); ui->mConfigTable->horizontalHeaderItem(1)->setToolTip("Identifie le type de filtrage, attention à la syntaxe.\nL'option 'DÉPLACER' déplacera le fichier dans le répertoire de destination\nL'option 'EFFACER' détruit le fichier dans le répertoire source.\nNote:Le répertoire de destination est ignoré avec l'option 'EFFACER'"); ui->mConfigTable->horizontalHeaderItem(2)->setToolTip("Préfixe ajouté lors du transfert du fichier afin d'identifier le lieu.\nCette chaîne de caractère sera retirée du nom lors de la copie vers le répertoire source."); ui->mConfigTable->horizontalHeaderItem(3)->setToolTip("Une simple description du filtre pour comprendre à quoi il sert."); ui->mConfigTable->horizontalHeaderItem(4)->setToolTip("Répertoire de destination lors du déplacement du fichier Log.\nCe paramètre est ignoré avec le type de filtre 'EFFACER'"); ui->mConfigTable->horizontalHeaderItem(5)->setToolTip("Lorsque ce paramètre est coché, un sous-répertoire sera créé à chaque jour dans le répertoire de destination.\nUtile pour les source de logs très nombreux (comme la Zone Test)"); ui->mConfigTable->horizontalHeaderItem(6)->setToolTip("Permet de désactiver un filtre sans avoir à l'effacer.\nUn filtre inactif est ignoré par le programme."); ui->mConfigTable->setRowCount(0); ui->mConfigTable->setSortingEnabled(true); connect(ui->mAddFilterBtn,&QPushButton::pressed,this,&CConfigPage::AddFilterBtnPressed); connect(ui->mDeleteFilterBtn,&QPushButton::pressed,this,&CConfigPage::DeleteFilterBtnPressed); connect(ui->mSaveBtn,&QPushButton::pressed,this,&CConfigPage::SaveConfigBtnPressed); connect(ui->mCancelBtn,&QPushButton::pressed,this,&CConfigPage::CancelBtnPressed); connect(ui->mCopyFilterBtn,&QPushButton::pressed,this,&CConfigPage::CopyFilterBtnPressed); } CConfigPage::~CConfigPage() { delete ui; } void CConfigPage::AddFilterBtnPressed() { ui->mConfigTable->setSortingEnabled(false); ui->mConfigTable->insertRow(0); QTableWidgetItem *NewItem; NewItem = new QTableWidgetItem(""); ui->mConfigTable->setItem(0,0,NewItem); NewItem = new QTableWidgetItem("DÉPLACER"); ui->mConfigTable->setItem(0,1,NewItem); NewItem = new QTableWidgetItem(""); ui->mConfigTable->setItem(0,2,NewItem); NewItem = new QTableWidgetItem(""); ui->mConfigTable->setItem(0,3,NewItem); NewItem = new QTableWidgetItem(""); ui->mConfigTable->setItem(0,4,NewItem); ui->mConfigTable->setSortingEnabled(true); QCheckBox *CheckBx = new QCheckBox(); ui->mConfigTable->setCellWidget(0,5,CheckBx); QComboBox *ComboBx = new QComboBox(); ComboBx->insertItem(0,"ACTIF"); ComboBx->insertItem(1,"INACTIF"); ComboBx->setCurrentIndex(0); ui->mConfigTable->setCellWidget(0,6,ComboBx); } void CConfigPage::DeleteFilterBtnPressed() { ui->mConfigTable->removeRow(ui->mConfigTable->currentRow()); } void CConfigPage::CancelBtnPressed() { InitializeConfigData(mProgramPtr->GetSorterConfigRequest()); } void CConfigPage::SaveConfigBtnPressed() { CLogsSorterConfigData CurrentConfig; //TODO: Confirmer la validité des données avant tout CurrentConfig.mLogsSourceDirectory = ui->mSrcDirLineEdit->text(); for(int i = 0; i < ui->mConfigTable->rowCount(); i++) { //"Filtre" << "Type" << "Préfixe" << "Description" << "Destination"); CLogsFilterData FilterData; FilterData.mLogIdentificator = ui->mConfigTable->item(i,0)->text(); FilterData.mLogPrefix = ui->mConfigTable->item(i,2)->text(); FilterData.mFilterName = ui->mConfigTable->item(i,3)->text(); FilterData.mLogDestination = ui->mConfigTable->item(i,4)->text(); QCheckBox *ChkBx = (QCheckBox*) ui->mConfigTable->cellWidget(i,5); FilterData.mCreateDayDirectories = ChkBx->isChecked(); QComboBox *ComboBx = (QComboBox*)ui->mConfigTable->cellWidget(i,6); if(ComboBx->currentIndex() == 0) { FilterData.mIsFilterActive = true; } else { FilterData.mIsFilterActive = false; } if(ui->mConfigTable->item(i,1)->text() == "DÉPLACER") { FilterData.mFilterOperation = CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE; } else if(ui->mConfigTable->item(i,1)->text() == "EFFACER") { FilterData.mFilterOperation = CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE; } else { //TODO: Ceci est une erreur... à gérer } CurrentConfig.mLogsFiltersList.append(FilterData); } mProgramPtr->SaveSorterConfigRequest(CurrentConfig); } void CConfigPage::InitializeConfigData(const CLogsSorterConfigData *DataStruct) { ui->mConfigTable->clearContents(); ui->mConfigTable->setSortingEnabled(false); ui->mSrcDirLineEdit->setText(DataStruct->mLogsSourceDirectory); ui->mConfigTable->setRowCount(DataStruct->mLogsFiltersList.size()); for(int i = 0; i < DataStruct->mLogsFiltersList.size(); i++) { QTableWidgetItem *NewItem; //"Filtre" << "Type" << "Préfixe" << "Description" << "Destination"); NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogIdentificator); ui->mConfigTable->setItem(i,0,NewItem); if(DataStruct->mLogsFiltersList.at(i).mFilterOperation == CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE) { NewItem = new QTableWidgetItem("DÉPLACER"); } if(DataStruct->mLogsFiltersList.at(i).mFilterOperation == CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE) { NewItem = new QTableWidgetItem("EFFACER"); } ui->mConfigTable->setItem(i,1,NewItem); NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogPrefix); ui->mConfigTable->setItem(i,2,NewItem); NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mFilterName); ui->mConfigTable->setItem(i,3,NewItem); NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogDestination); ui->mConfigTable->setItem(i,4,NewItem); QCheckBox *CheckBx = new QCheckBox(); CheckBx->setChecked(DataStruct->mLogsFiltersList.at(i).mCreateDayDirectories); ui->mConfigTable->setCellWidget(i,5,CheckBx); QComboBox *ComboBx = new QComboBox(); ComboBx->insertItem(0,"ACTIF"); ComboBx->insertItem(1,"INACTIF"); if(DataStruct->mLogsFiltersList.at(i).mIsFilterActive == true) { ComboBx->setCurrentIndex(0); } else { ComboBx->setCurrentIndex(1); } ui->mConfigTable->setCellWidget(i,6,ComboBx); } ui->mConfigTable->resizeColumnsToContents(); ui->mConfigTable->setSortingEnabled(true); } void CConfigPage::CopyFilterBtnPressed() { ui->mConfigTable->setSortingEnabled(false); ui->mConfigTable->insertRow(0); int row = ui->mConfigTable->currentRow(); QTableWidgetItem *NewItem; NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,0)); ui->mConfigTable->setItem(0,0,NewItem); NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,1)); ui->mConfigTable->setItem(0,1,NewItem); NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,2)); ui->mConfigTable->setItem(0,2,NewItem); NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,3)); ui->mConfigTable->setItem(0,3,NewItem); NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,4)); ui->mConfigTable->setItem(0,4,NewItem); QCheckBox *CheckBx = new QCheckBox(); ui->mConfigTable->setCellWidget(0,5,CheckBx); QComboBox *ComboBx = (QComboBox*)ui->mConfigTable->cellWidget(row,6); int index = ComboBx->currentIndex(); ComboBx = new QComboBox(); ComboBx->insertItem(0,"ACTIF"); ComboBx->insertItem(1,"INACTIF"); ComboBx->setCurrentIndex(index); ui->mConfigTable->setCellWidget(0,6,ComboBx); ui->mConfigTable->setSortingEnabled(true); }