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.
 
 
 

162 lines
4.6 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. for(ProduitInfo i : listInfoProd)
  42. ajouterProduit(new ProduitItem(this, i.nomProduit, i.dateAchat, i.dateFinGarantie, i.image, i.indexMagasin, i.enSAV, i.factures, i.garanties));
  43. }
  44. ui->actionSupprimerProduit->setEnabled(false);
  45. ui->statusBar->hide();
  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(this, "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(QSize(0, 128));
  97. ui->listeProduits->addItem(widgetItem);
  98. ui->listeProduits->setItemWidget(widgetItem, produit);
  99. //ui->statusBar->showMessage(QString::number(ui->listeProduits->count())+" produits affichés.");
  100. }
  101. void MainWindow::on_listeProduits_currentRowChanged()
  102. {
  103. ui->actionSupprimerProduit->setEnabled(true);
  104. }
  105. void MainWindow::on_actionAPropos_triggered()
  106. {
  107. AboutDialog *dialog = new AboutDialog(this, version);
  108. dialog->setModal(true);
  109. dialog->show();
  110. }
  111. void MainWindow::on_actionAide_triggered()
  112. {
  113. QDesktopServices::openUrl(QUrl("http://hermes.deuchnord.tk/help/"));
  114. }
  115. MainWindow::~MainWindow()
  116. {
  117. // Enregistrement de la configuration
  118. QFile saveFile(QDir::homePath()+"/hermes.hrms");
  119. QDataStream content(&saveFile);
  120. content.setVersion(QDataStream::Qt_5_0);
  121. QList<ProduitInfo> listProd;
  122. if(saveFile.open(QFile::WriteOnly))
  123. {
  124. for(int i = 0; i < ui->listeProduits->count(); i++)
  125. {
  126. ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i));
  127. ProduitInfo prod = item->getProduitInfo();
  128. listProd << prod;
  129. }
  130. }
  131. content << listProd;
  132. saveFile.close();
  133. delete ui;
  134. }