Your warranties manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

160 lines
4.5 KiB

  1. #include "mainwindow.h"
  2. #include "produititem.h"
  3. #include "gestionmagasinsdialog.h"
  4. #include "aboutdialog.h"
  5. #include "ui_mainwindow.h"
  6. #include <QWidget>
  7. #include <QListWidgetItem>
  8. #include <QPixmap>
  9. #include <QSpacerItem>
  10. #include <QDate>
  11. #include <QMessageBox>
  12. #include <QListWidget>
  13. #include <QListWidgetItem>
  14. #include <QDir>
  15. #include <QFile>
  16. #include <QDataStream>
  17. #include <QList>
  18. #include <QDesktopServices>
  19. #include <QUrl>
  20. MainWindow::MainWindow(QWidget *parent) :
  21. QMainWindow(parent),
  22. ui(new Ui::MainWindow)
  23. {
  24. ui->setupUi(this);
  25. version = "0.1";
  26. searchBox = new QLineEdit(this);
  27. searchBox->setPlaceholderText("Rechercher...");
  28. searchBox->setToolTip("Recherchez un produit à partir de son nom.\nLa casse n'est pas prise en compte.");
  29. searchBox->setClearButtonEnabled(true);
  30. connect(searchBox, SIGNAL(textChanged(QString)), SLOT(searchProduit(QString)));
  31. ui->mainToolBar->addSeparator();
  32. ui->mainToolBar->addWidget(searchBox);
  33. // Récupération de la configuration
  34. QFile saveFile(QDir::homePath()+"/hermes.hrms");
  35. QDataStream content(&saveFile);
  36. content.setVersion(QDataStream::Qt_5_0);
  37. if(saveFile.open(QFile::ReadOnly))
  38. {
  39. QList<ProduitInfo> listInfoProd;
  40. content >> listInfoProd;
  41. //QMessageBox::information(this, "test", QString::number(listInfoProd.count()));
  42. for(ProduitInfo i : listInfoProd)
  43. ajouterProduit(new ProduitItem(i.nomProduit, i.dateAchat, i.dateFinGarantie, i.image, i.indexMagasin, i.enSAV, i.factures, i.garanties));
  44. }
  45. ui->actionSupprimerProduit->setEnabled(false);
  46. }
  47. void MainWindow::searchProduit(QString search)
  48. {
  49. if(search != "")
  50. {
  51. for(int i = 0; i < ui->listeProduits->count(); i++)
  52. {
  53. ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i));
  54. ProduitInfo prod = item->getProduitInfo();
  55. // On cache les produits qui ne correspondent pas
  56. if(prod.nomProduit.contains(search, Qt::CaseInsensitive))
  57. ui->listeProduits->item(i)->setHidden(false);
  58. else
  59. ui->listeProduits->item(i)->setHidden(true);
  60. }
  61. }
  62. else
  63. {
  64. // Si la zone de recherche est vide, on affiche tout
  65. for(int i = 0; i < ui->listeProduits->count(); i++)
  66. ui->listeProduits->item(i)->setHidden(false);
  67. }
  68. }
  69. void MainWindow::on_actionNouveauProduit_triggered()
  70. {
  71. ProduitItem *prod = new ProduitItem("Nouveau produit", QDate::currentDate(), QDate::currentDate().addYears(1));
  72. prod->openDialog();
  73. ajouterProduit(prod);
  74. }
  75. void MainWindow::on_actionSupprimerProduit_triggered()
  76. {
  77. if(ui->listeProduits->selectedItems().count() == 1)
  78. {
  79. QListWidgetItem *item = ui->listeProduits->selectedItems()[0];
  80. if(QMessageBox::question(this, "Supprimer le produit", "Êtes-vous sûr de vouloir supprimer ce produit ?\nCette action n'est pas réversible.", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
  81. {
  82. ui->listeProduits->removeItemWidget(item);
  83. delete item;
  84. }
  85. }
  86. }
  87. void MainWindow::on_actionGererMagasins_triggered()
  88. {
  89. GestionMagasinsDialog *dialog = new GestionMagasinsDialog(this);
  90. dialog->setModal(true);
  91. dialog->show();
  92. }
  93. void MainWindow::ajouterProduit(ProduitItem *produit)
  94. {
  95. QListWidgetItem *widgetItem = new QListWidgetItem();
  96. widgetItem->setSizeHint(produit->getImage().size());
  97. ui->listeProduits->addItem(widgetItem);
  98. ui->listeProduits->setItemWidget(widgetItem, produit);
  99. }
  100. void MainWindow::on_listeProduits_currentRowChanged()
  101. {
  102. ui->actionSupprimerProduit->setEnabled(true);
  103. }
  104. void MainWindow::on_actionAPropos_triggered()
  105. {
  106. AboutDialog *dialog = new AboutDialog(this, version);
  107. dialog->setModal(true);
  108. dialog->show();
  109. }
  110. void MainWindow::on_actionAide_triggered()
  111. {
  112. QDesktopServices::openUrl(QUrl("http://hermes.deuchnord.tk/help/"));
  113. }
  114. MainWindow::~MainWindow()
  115. {
  116. // Enregistrement de la configuration
  117. QFile saveFile(QDir::homePath()+"/hermes.hrms");
  118. QDataStream content(&saveFile);
  119. content.setVersion(QDataStream::Qt_5_0);
  120. QList<ProduitInfo> listProd;
  121. if(saveFile.open(QFile::WriteOnly))
  122. {
  123. for(int i = 0; i < ui->listeProduits->count(); i++)
  124. {
  125. ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i));
  126. ProduitInfo prod = item->getProduitInfo();
  127. listProd << prod;
  128. }
  129. }
  130. content << listProd;
  131. saveFile.close();
  132. delete ui;
  133. }