Your warranties manager
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. }