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.
 
 
 

171 lines
4.4 KiB

  1. #include "produititem.h"
  2. #include "ui_produititem.h"
  3. #include <QMessageBox>
  4. QDataStream &operator <<(QDataStream &out, const ProduitInfo &prod)
  5. {
  6. out << prod.nomProduit << prod.dateAchat << prod.dateFinGarantie << prod.image << prod.indexMagasin << prod.enSAV << prod.factures << prod.garanties;
  7. return out;
  8. }
  9. QDataStream &operator >>(QDataStream &in, ProduitInfo &prod)
  10. {
  11. in >> prod.nomProduit >> prod.dateAchat >> prod.dateFinGarantie >> prod.image >> prod.indexMagasin >> prod.enSAV >> prod.factures >> prod.garanties;
  12. return in;
  13. }
  14. ProduitItem::ProduitItem(QString nomProduit, QDate dateAchat, QDate dateFinGarantie, QPixmap image, int magasin,
  15. bool enSAV, QHash<QString, QByteArray> factures, QHash<QString, QByteArray> garanties) :
  16. QWidget(),
  17. ui(new Ui::ProduitItem)
  18. {
  19. ui->setupUi(this);
  20. this->nomProduit = nomProduit;
  21. this->dateAchat = dateAchat;
  22. this->dateFinGarantie = dateFinGarantie;
  23. this->indexMagasin = magasin;
  24. this->enSAV = enSAV;
  25. this->factures = factures;
  26. this->garanties = garanties;
  27. ui->nomProduit->setText("<h1>"+nomProduit+"</h1>");
  28. updateDescription();
  29. this->image = image;
  30. this->image.scaled(QSize(128, 128), Qt::KeepAspectRatio);
  31. ui->image->setPixmap(this->image);
  32. ui->btnMoreInfo->setToolTip("Ouvre une fenêtre contenant toutes les informations\nsur votre "+nomProduit+".");
  33. }
  34. ProduitItem::ProduitItem(ProduitInfo prod) :
  35. QWidget(),
  36. ui(new Ui::ProduitItem)
  37. {
  38. ProduitItem(prod.nomProduit, prod.dateAchat, prod.dateFinGarantie, prod.image, prod.indexMagasin, prod.enSAV, prod.factures, prod.garanties);
  39. ui->setupUi(this);
  40. }
  41. void ProduitItem::on_btnMoreInfo_clicked()
  42. {
  43. InfosProduitDialog *winInfoProd = new InfosProduitDialog(this, nomProduit, dateAchat, dateFinGarantie, image, indexMagasin, enSAV, factures, garanties);
  44. winInfoProd->setModal(true);
  45. winInfoProd->show();
  46. }
  47. // Accesseurs
  48. QPixmap ProduitItem::getImage()
  49. {
  50. return this->image;
  51. }
  52. void ProduitItem::setNomProduit(QString nomProduit)
  53. {
  54. this->nomProduit = nomProduit;
  55. ui->nomProduit->setText("<h1>"+nomProduit+"</h1>");
  56. }
  57. void ProduitItem::setDateAchat(QDate dateAchat)
  58. {
  59. this->dateAchat = dateAchat;
  60. updateDescription();
  61. }
  62. void ProduitItem::setDateFinGarantie(QDate dateFinGarantie)
  63. {
  64. this->dateFinGarantie = dateFinGarantie;
  65. updateDescription();
  66. }
  67. void ProduitItem::setImage(QPixmap image)
  68. {
  69. this->image = image;
  70. ui->image->setPixmap(image);
  71. }
  72. void ProduitItem::setMagasin(int index)
  73. {
  74. this->indexMagasin = index;
  75. }
  76. void ProduitItem::setEnSAV(bool y)
  77. {
  78. this->enSAV = y;
  79. updateDescription();
  80. }
  81. void ProduitItem::setFactures(QHash<QString, QByteArray> factures)
  82. {
  83. this->factures = factures;
  84. }
  85. void ProduitItem::setGaranties(QHash<QString, QByteArray> garanties)
  86. {
  87. this->garanties = garanties;
  88. }
  89. // Permet de mettre à jour le petit texte en-dessous du nom du produit
  90. void ProduitItem::updateDescription()
  91. {
  92. QString jourAchat = QString::number(dateAchat.day());
  93. if(dateAchat.day() < 10)
  94. jourAchat = "0"+jourAchat;
  95. QString moisAchat = QString::number(dateAchat.month());
  96. if(dateAchat.month() < 10)
  97. moisAchat = "0"+moisAchat;
  98. descriptionListe = "Acheté le "+jourAchat+"/"+moisAchat+"/"+QString::number(dateAchat.year())+", ";
  99. QString jourFinGarantie = QString::number(dateFinGarantie.day());
  100. if(dateFinGarantie.day() < 10)
  101. jourFinGarantie = "0"+jourFinGarantie;
  102. QString moisFinGarantie = QString::number(dateFinGarantie.month());
  103. if(dateFinGarantie.month() < 10)
  104. moisFinGarantie = "0"+moisFinGarantie;
  105. if(QDate::currentDate() < dateFinGarantie)
  106. descriptionListe += "fin de la garantie le "+jourFinGarantie+"/"+moisFinGarantie+"/"+QString::number(dateFinGarantie.year());
  107. else
  108. descriptionListe += "garantie expirée";
  109. if(this->enSAV)
  110. descriptionListe += "\nParti en SAV";
  111. ui->infosProduit->setText(descriptionListe);
  112. }
  113. void ProduitItem::openDialog()
  114. {
  115. ui->btnMoreInfo->click();
  116. }
  117. // Pour la sérialisation
  118. ProduitInfo ProduitItem::getProduitInfo()
  119. {
  120. ProduitInfo i;
  121. i.nomProduit = this->nomProduit;
  122. i.dateAchat = this->dateAchat;
  123. i.dateFinGarantie = this->dateFinGarantie;
  124. i.image = this->image;
  125. i.indexMagasin = this->indexMagasin;
  126. i.enSAV = this->enSAV;
  127. i.factures = this->factures;
  128. i.garanties = this->garanties;
  129. return i;
  130. }
  131. ProduitItem::~ProduitItem()
  132. {
  133. delete ui;
  134. }