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.

преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. }