Your warranties manager
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

mainwindow.cpp 4.6 KiB

10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
10 anni fa
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. }