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.
 
 
 

164 lines
4.2 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(QWidget *parent, QString nomProduit, QDate dateAchat, QDate dateFinGarantie, QPixmap image, int magasin,
  15. bool enSAV, QHash<QString, QByteArray> factures, QHash<QString, QByteArray> garanties) :
  16. QWidget(parent),
  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. void ProduitItem::on_btnMoreInfo_clicked()
  35. {
  36. InfosProduitDialog *winInfoProd = new InfosProduitDialog(this, this->parentWidget(), nomProduit, dateAchat, dateFinGarantie, image, indexMagasin, enSAV, factures, garanties);
  37. winInfoProd->setModal(true);
  38. winInfoProd->show();
  39. }
  40. // Accesseurs
  41. QPixmap ProduitItem::getImage()
  42. {
  43. return this->image;
  44. }
  45. void ProduitItem::setNomProduit(QString nomProduit)
  46. {
  47. this->nomProduit = nomProduit;
  48. ui->nomProduit->setText("<h1>"+nomProduit+"</h1>");
  49. }
  50. void ProduitItem::setDateAchat(QDate dateAchat)
  51. {
  52. this->dateAchat = dateAchat;
  53. updateDescription();
  54. }
  55. void ProduitItem::setDateFinGarantie(QDate dateFinGarantie)
  56. {
  57. this->dateFinGarantie = dateFinGarantie;
  58. updateDescription();
  59. }
  60. void ProduitItem::setImage(QPixmap image)
  61. {
  62. this->image = image;
  63. ui->image->setPixmap(image);
  64. }
  65. void ProduitItem::setMagasin(int index)
  66. {
  67. this->indexMagasin = index;
  68. }
  69. void ProduitItem::setEnSAV(bool y)
  70. {
  71. this->enSAV = y;
  72. updateDescription();
  73. }
  74. void ProduitItem::setFactures(QHash<QString, QByteArray> factures)
  75. {
  76. this->factures = factures;
  77. }
  78. void ProduitItem::setGaranties(QHash<QString, QByteArray> garanties)
  79. {
  80. this->garanties = garanties;
  81. }
  82. // Permet de mettre à jour le petit texte en-dessous du nom du produit
  83. void ProduitItem::updateDescription()
  84. {
  85. QString jourAchat = QString::number(dateAchat.day());
  86. if(dateAchat.day() < 10)
  87. jourAchat = "0"+jourAchat;
  88. QString moisAchat = QString::number(dateAchat.month());
  89. if(dateAchat.month() < 10)
  90. moisAchat = "0"+moisAchat;
  91. descriptionListe = "Acheté le "+jourAchat+"/"+moisAchat+"/"+QString::number(dateAchat.year())+", ";
  92. QString jourFinGarantie = QString::number(dateFinGarantie.day());
  93. if(dateFinGarantie.day() < 10)
  94. jourFinGarantie = "0"+jourFinGarantie;
  95. QString moisFinGarantie = QString::number(dateFinGarantie.month());
  96. if(dateFinGarantie.month() < 10)
  97. moisFinGarantie = "0"+moisFinGarantie;
  98. if(QDate::currentDate() < dateFinGarantie)
  99. descriptionListe += "fin de la garantie le "+jourFinGarantie+"/"+moisFinGarantie+"/"+QString::number(dateFinGarantie.year());
  100. else
  101. descriptionListe += "garantie expirée";
  102. if(this->enSAV)
  103. descriptionListe += "\nParti en SAV";
  104. ui->infosProduit->setText(descriptionListe);
  105. }
  106. void ProduitItem::openDialog()
  107. {
  108. ui->btnMoreInfo->click();
  109. }
  110. // Pour la sérialisation
  111. ProduitInfo ProduitItem::getProduitInfo()
  112. {
  113. ProduitInfo i;
  114. i.nomProduit = this->nomProduit;
  115. i.dateAchat = this->dateAchat;
  116. i.dateFinGarantie = this->dateFinGarantie;
  117. i.image = this->image;
  118. i.indexMagasin = this->indexMagasin;
  119. i.enSAV = this->enSAV;
  120. i.factures = this->factures;
  121. i.garanties = this->garanties;
  122. return i;
  123. }
  124. ProduitItem::~ProduitItem()
  125. {
  126. delete ui;
  127. }