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.

produititem.cpp 4.4 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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(tr("Ouvre une fenêtre contenant toutes les informations\nsur votre %1.", "%1 represents the name of the product, as given in the Name field.").arg(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. if(dateFinGarantie != QDate(1970, 1, 1))
  98. {
  99. if(QDate::currentDate() < dateFinGarantie)
  100. descriptionListe = tr("Acheté le %1, fin de la garantie le %2", "%1 and %2 are dates").arg(dateAchat.toString(Qt::LocaleDate), dateFinGarantie.toString(Qt::LocaleDate));
  101. else
  102. descriptionListe = tr("Acheté le %1, garantie expirée", "%1 is a date").arg(dateAchat.toString(Qt::LocaleDate));
  103. }
  104. else
  105. descriptionListe = tr("Acheté le %1, garantie à vie", "%1 is a date").arg(dateAchat.toString(Qt::LocaleDate));
  106. if(this->enSAV)
  107. descriptionListe += tr("\nParti en SAV");
  108. ui->infosProduit->setText(descriptionListe);
  109. }
  110. void ProduitItem::openDialog(bool deleteOnCancel)
  111. {
  112. on_btnMoreInfo_clicked(deleteOnCancel);
  113. }
  114. // Pour la sérialisation
  115. ProduitInfo ProduitItem::getProduitInfo()
  116. {
  117. ProduitInfo i;
  118. i.nomProduit = this->nomProduit;
  119. i.dateAchat = this->dateAchat;
  120. i.dateFinGarantie = this->dateFinGarantie;
  121. i.image = this->image;
  122. i.indexMagasin = this->indexMagasin;
  123. i.enSAV = this->enSAV;
  124. i.factures = this->factures;
  125. i.garanties = this->garanties;
  126. return i;
  127. }
  128. ProduitItem::~ProduitItem()
  129. {
  130. delete ui;
  131. }