No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

235 líneas
9.0 KiB

  1. #include "ConfigPage.h"
  2. #include "ui_ConfigPage.h"
  3. #include "LogsSorterConfigData.h"
  4. #include <QCheckBox>
  5. #include <QComboBox>
  6. #include "LogsSorter.h"
  7. #include "LogsSorterConfigData.h"
  8. CConfigPage::CConfigPage(QWidget *parent) :
  9. QDialog(parent),
  10. ui(new Ui::CConfigPage)
  11. {
  12. ui->setupUi(this);
  13. // FILTRE="ZT1" #test de commentaire
  14. // TYPE="DÉPLACER"
  15. // DESCRIPTION="Zone Test 1 Terminus Beaugrand"
  16. // PREFIXE="HBGR"
  17. // DESTINATION="D:\Main\Fichiers\JOB\LogsDump\ZT Beaugrand"
  18. setAutoFillBackground(true);
  19. ui->mConfigTable->setAutoFillBackground(true);
  20. ui->mConfigTable->setColumnCount(7);
  21. ui->mConfigTable->setHorizontalHeaderLabels(QStringList() << "Filtre" << "Type" << "Préfixe" << "Description" << "Destination" << "Séparer\nRépertoires" << "Actif");
  22. ui->mConfigTable->setSelectionBehavior(QAbstractItemView::SelectRows);
  23. 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é");
  24. 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'");
  25. 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.");
  26. ui->mConfigTable->horizontalHeaderItem(3)->setToolTip("Une simple description du filtre pour comprendre à quoi il sert.");
  27. 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'");
  28. 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)");
  29. ui->mConfigTable->horizontalHeaderItem(6)->setToolTip("Permet de désactiver un filtre sans avoir à l'effacer.\nUn filtre inactif est ignoré par le programme.");
  30. ui->mConfigTable->setRowCount(0);
  31. ui->mConfigTable->setSortingEnabled(true);
  32. connect(ui->mAddFilterBtn,&QPushButton::pressed,this,&CConfigPage::AddFilterBtnPressed);
  33. connect(ui->mDeleteFilterBtn,&QPushButton::pressed,this,&CConfigPage::DeleteFilterBtnPressed);
  34. connect(ui->mSaveBtn,&QPushButton::pressed,this,&CConfigPage::SaveConfigBtnPressed);
  35. connect(ui->mCancelBtn,&QPushButton::pressed,this,&CConfigPage::CancelBtnPressed);
  36. connect(ui->mCopyFilterBtn,&QPushButton::pressed,this,&CConfigPage::CopyFilterBtnPressed);
  37. }
  38. CConfigPage::~CConfigPage()
  39. {
  40. delete ui;
  41. }
  42. void CConfigPage::AddFilterBtnPressed()
  43. {
  44. ui->mConfigTable->setSortingEnabled(false);
  45. ui->mConfigTable->insertRow(0);
  46. QTableWidgetItem *NewItem;
  47. NewItem = new QTableWidgetItem("");
  48. ui->mConfigTable->setItem(0,0,NewItem);
  49. NewItem = new QTableWidgetItem("DÉPLACER");
  50. ui->mConfigTable->setItem(0,1,NewItem);
  51. NewItem = new QTableWidgetItem("");
  52. ui->mConfigTable->setItem(0,2,NewItem);
  53. NewItem = new QTableWidgetItem("");
  54. ui->mConfigTable->setItem(0,3,NewItem);
  55. NewItem = new QTableWidgetItem("");
  56. ui->mConfigTable->setItem(0,4,NewItem);
  57. ui->mConfigTable->setSortingEnabled(true);
  58. QCheckBox *CheckBx = new QCheckBox();
  59. ui->mConfigTable->setCellWidget(0,5,CheckBx);
  60. QComboBox *ComboBx = new QComboBox();
  61. ComboBx->insertItem(0,"ACTIF");
  62. ComboBx->insertItem(1,"INACTIF");
  63. ComboBx->setCurrentIndex(0);
  64. ui->mConfigTable->setCellWidget(0,6,ComboBx);
  65. }
  66. void CConfigPage::DeleteFilterBtnPressed()
  67. {
  68. ui->mConfigTable->removeRow(ui->mConfigTable->currentRow());
  69. }
  70. void CConfigPage::CancelBtnPressed()
  71. {
  72. InitializeConfigData(mProgramPtr->GetSorterConfigRequest());
  73. }
  74. void CConfigPage::SaveConfigBtnPressed()
  75. {
  76. CLogsSorterConfigData CurrentConfig;
  77. //TODO: Confirmer la validité des données avant tout
  78. CurrentConfig.mLogsSourceDirectory = ui->mSrcDirLineEdit->text();
  79. for(int i = 0; i < ui->mConfigTable->rowCount(); i++)
  80. {
  81. //"Filtre" << "Type" << "Préfixe" << "Description" << "Destination");
  82. CLogsFilterData FilterData;
  83. FilterData.mLogIdentificator = ui->mConfigTable->item(i,0)->text();
  84. FilterData.mLogPrefix = ui->mConfigTable->item(i,2)->text();
  85. FilterData.mFilterName = ui->mConfigTable->item(i,3)->text();
  86. FilterData.mLogDestination = ui->mConfigTable->item(i,4)->text();
  87. QCheckBox *ChkBx = (QCheckBox*) ui->mConfigTable->cellWidget(i,5);
  88. FilterData.mCreateDayDirectories = ChkBx->isChecked();
  89. QComboBox *ComboBx = (QComboBox*)ui->mConfigTable->cellWidget(i,6);
  90. if(ComboBx->currentIndex() == 0)
  91. {
  92. FilterData.mIsFilterActive = true;
  93. }
  94. else
  95. {
  96. FilterData.mIsFilterActive = false;
  97. }
  98. if(ui->mConfigTable->item(i,1)->text() == "DÉPLACER")
  99. {
  100. FilterData.mFilterOperation = CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE;
  101. }
  102. else if(ui->mConfigTable->item(i,1)->text() == "EFFACER")
  103. {
  104. FilterData.mFilterOperation = CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE;
  105. }
  106. else
  107. {
  108. //TODO: Ceci est une erreur... à gérer
  109. }
  110. CurrentConfig.mLogsFiltersList.append(FilterData);
  111. }
  112. mProgramPtr->SaveSorterConfigRequest(CurrentConfig);
  113. }
  114. void CConfigPage::InitializeConfigData(const CLogsSorterConfigData *DataStruct)
  115. {
  116. ui->mConfigTable->clearContents();
  117. ui->mConfigTable->setSortingEnabled(false);
  118. ui->mSrcDirLineEdit->setText(DataStruct->mLogsSourceDirectory);
  119. ui->mConfigTable->setRowCount(DataStruct->mLogsFiltersList.size());
  120. for(int i = 0; i < DataStruct->mLogsFiltersList.size(); i++)
  121. {
  122. QTableWidgetItem *NewItem;
  123. //"Filtre" << "Type" << "Préfixe" << "Description" << "Destination");
  124. NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogIdentificator);
  125. ui->mConfigTable->setItem(i,0,NewItem);
  126. if(DataStruct->mLogsFiltersList.at(i).mFilterOperation == CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE)
  127. {
  128. NewItem = new QTableWidgetItem("DÉPLACER");
  129. }
  130. if(DataStruct->mLogsFiltersList.at(i).mFilterOperation == CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE)
  131. {
  132. NewItem = new QTableWidgetItem("EFFACER");
  133. }
  134. ui->mConfigTable->setItem(i,1,NewItem);
  135. NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogPrefix);
  136. ui->mConfigTable->setItem(i,2,NewItem);
  137. NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mFilterName);
  138. ui->mConfigTable->setItem(i,3,NewItem);
  139. NewItem = new QTableWidgetItem(DataStruct->mLogsFiltersList.at(i).mLogDestination);
  140. ui->mConfigTable->setItem(i,4,NewItem);
  141. QCheckBox *CheckBx = new QCheckBox();
  142. CheckBx->setChecked(DataStruct->mLogsFiltersList.at(i).mCreateDayDirectories);
  143. ui->mConfigTable->setCellWidget(i,5,CheckBx);
  144. QComboBox *ComboBx = new QComboBox();
  145. ComboBx->insertItem(0,"ACTIF");
  146. ComboBx->insertItem(1,"INACTIF");
  147. if(DataStruct->mLogsFiltersList.at(i).mIsFilterActive == true)
  148. {
  149. ComboBx->setCurrentIndex(0);
  150. }
  151. else
  152. {
  153. ComboBx->setCurrentIndex(1);
  154. }
  155. ui->mConfigTable->setCellWidget(i,6,ComboBx);
  156. }
  157. ui->mConfigTable->resizeColumnsToContents();
  158. ui->mConfigTable->setSortingEnabled(true);
  159. }
  160. void CConfigPage::CopyFilterBtnPressed()
  161. {
  162. ui->mConfigTable->setSortingEnabled(false);
  163. ui->mConfigTable->insertRow(0);
  164. int row = ui->mConfigTable->currentRow();
  165. QTableWidgetItem *NewItem;
  166. NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,0));
  167. ui->mConfigTable->setItem(0,0,NewItem);
  168. NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,1));
  169. ui->mConfigTable->setItem(0,1,NewItem);
  170. NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,2));
  171. ui->mConfigTable->setItem(0,2,NewItem);
  172. NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,3));
  173. ui->mConfigTable->setItem(0,3,NewItem);
  174. NewItem = new QTableWidgetItem(*ui->mConfigTable->item(row,4));
  175. ui->mConfigTable->setItem(0,4,NewItem);
  176. QCheckBox *CheckBx = new QCheckBox();
  177. ui->mConfigTable->setCellWidget(0,5,CheckBx);
  178. QComboBox *ComboBx = (QComboBox*)ui->mConfigTable->cellWidget(row,6);
  179. int index = ComboBx->currentIndex();
  180. ComboBx = new QComboBox();
  181. ComboBx->insertItem(0,"ACTIF");
  182. ComboBx->insertItem(1,"INACTIF");
  183. ComboBx->setCurrentIndex(index);
  184. ui->mConfigTable->setCellWidget(0,6,ComboBx);
  185. ui->mConfigTable->setSortingEnabled(true);
  186. }