#include "produititem.h" #include "ui_produititem.h" #include QDataStream &operator <<(QDataStream &out, const ProduitInfo &prod) { out << prod.nomProduit << prod.dateAchat << prod.dateFinGarantie << prod.image << prod.indexMagasin << prod.enSAV << prod.factures << prod.garanties; return out; } QDataStream &operator >>(QDataStream &in, ProduitInfo &prod) { in >> prod.nomProduit >> prod.dateAchat >> prod.dateFinGarantie >> prod.image >> prod.indexMagasin >> prod.enSAV >> prod.factures >> prod.garanties; return in; } ProduitItem::ProduitItem(QString nomProduit, QDate dateAchat, QDate dateFinGarantie, QPixmap image, int magasin, bool enSAV, QHash factures, QHash garanties) : QWidget(), ui(new Ui::ProduitItem) { ui->setupUi(this); this->nomProduit = nomProduit; this->dateAchat = dateAchat; this->dateFinGarantie = dateFinGarantie; this->indexMagasin = magasin; this->enSAV = enSAV; this->factures = factures; this->garanties = garanties; ui->nomProduit->setText("

"+nomProduit+"

"); updateDescription(); this->image = image; this->image.scaled(QSize(128, 128), Qt::KeepAspectRatio); ui->image->setPixmap(this->image); ui->btnMoreInfo->setToolTip("Ouvre une fenêtre contenant toutes les informations\nsur votre "+nomProduit+"."); } ProduitItem::ProduitItem(ProduitInfo prod) : QWidget(), ui(new Ui::ProduitItem) { ProduitItem(prod.nomProduit, prod.dateAchat, prod.dateFinGarantie, prod.image, prod.indexMagasin, prod.enSAV, prod.factures, prod.garanties); ui->setupUi(this); } void ProduitItem::on_btnMoreInfo_clicked() { InfosProduitDialog *winInfoProd = new InfosProduitDialog(this, nomProduit, dateAchat, dateFinGarantie, image, indexMagasin, enSAV, factures, garanties); winInfoProd->setModal(true); winInfoProd->show(); } // Accesseurs QPixmap ProduitItem::getImage() { return this->image; } void ProduitItem::setNomProduit(QString nomProduit) { this->nomProduit = nomProduit; ui->nomProduit->setText("

"+nomProduit+"

"); } void ProduitItem::setDateAchat(QDate dateAchat) { this->dateAchat = dateAchat; updateDescription(); } void ProduitItem::setDateFinGarantie(QDate dateFinGarantie) { this->dateFinGarantie = dateFinGarantie; updateDescription(); } void ProduitItem::setImage(QPixmap image) { this->image = image; ui->image->setPixmap(image); } void ProduitItem::setMagasin(int index) { this->indexMagasin = index; } void ProduitItem::setEnSAV(bool y) { this->enSAV = y; updateDescription(); } void ProduitItem::setFactures(QHash factures) { this->factures = factures; } void ProduitItem::setGaranties(QHash garanties) { this->garanties = garanties; } // Permet de mettre à jour le petit texte en-dessous du nom du produit void ProduitItem::updateDescription() { QString jourAchat = QString::number(dateAchat.day()); if(dateAchat.day() < 10) jourAchat = "0"+jourAchat; QString moisAchat = QString::number(dateAchat.month()); if(dateAchat.month() < 10) moisAchat = "0"+moisAchat; descriptionListe = "Acheté le "+jourAchat+"/"+moisAchat+"/"+QString::number(dateAchat.year())+", "; QString jourFinGarantie = QString::number(dateFinGarantie.day()); if(dateFinGarantie.day() < 10) jourFinGarantie = "0"+jourFinGarantie; QString moisFinGarantie = QString::number(dateFinGarantie.month()); if(dateFinGarantie.month() < 10) moisFinGarantie = "0"+moisFinGarantie; if(QDate::currentDate() < dateFinGarantie) descriptionListe += "fin de la garantie le "+jourFinGarantie+"/"+moisFinGarantie+"/"+QString::number(dateFinGarantie.year()); else descriptionListe += "garantie expirée"; if(this->enSAV) descriptionListe += "\nParti en SAV"; ui->infosProduit->setText(descriptionListe); } void ProduitItem::openDialog() { ui->btnMoreInfo->click(); } // Pour la sérialisation ProduitInfo ProduitItem::getProduitInfo() { ProduitInfo i; i.nomProduit = this->nomProduit; i.dateAchat = this->dateAchat; i.dateFinGarantie = this->dateFinGarantie; i.image = this->image; i.indexMagasin = this->indexMagasin; i.enSAV = this->enSAV; i.factures = this->factures; i.garanties = this->garanties; return i; } ProduitItem::~ProduitItem() { delete ui; }