#include "produititem.h" #include "ui_produititem.h" #include "mainwindow.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(QWidget *parent, QString nomProduit, QDate dateAchat, QDate dateFinGarantie, QPixmap image, int magasin, bool enSAV, QHash factures, QHash garanties) : QWidget(parent), 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+"."); } void ProduitItem::on_btnMoreInfo_clicked(bool deleteOnCancel) { InfosProduitDialog *winInfoProd = new InfosProduitDialog(this, this->parentWidget(), nomProduit, dateAchat, dateFinGarantie, image, indexMagasin, enSAV, factures, garanties); winInfoProd->setModal(true); winInfoProd->show(); // Si on annule et que deleteOnCancel est vrai, le signal deleteAsked() sera déclenché. if(deleteOnCancel) connect(winInfoProd, SIGNAL(rejected()), SLOT(winInfoProdCanceled())); } void ProduitItem::winInfoProdCanceled() { emit deleteAsked(); } // 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); } int ProduitItem::getMagasin() { return this->indexMagasin; } 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(dateFinGarantie != QDate(1970, 1, 1)) { if(QDate::currentDate() < dateFinGarantie) descriptionListe += "fin de la garantie le "+jourFinGarantie+"/"+moisFinGarantie+"/"+QString::number(dateFinGarantie.year()); else descriptionListe += "garantie expirée"; } else descriptionListe += "garantie à vie"; if(this->enSAV) descriptionListe += "\nParti en SAV"; ui->infosProduit->setText(descriptionListe); } void ProduitItem::openDialog(bool deleteOnCancel) { on_btnMoreInfo_clicked(deleteOnCancel); } // 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; }