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.
 
 
 

184 lines
4.7 KiB

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