#include "mainwindow.h" #include "produititem.h" #include "gestionmagasinsdialog.h" #include "aboutdialog.h" #include "ui_mainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); version = "0.1"; searchBox = new QLineEdit(this); searchBox->setPlaceholderText("Rechercher..."); searchBox->setToolTip("Recherchez un produit à partir de son nom.\nLa casse n'est pas prise en compte."); searchBox->setClearButtonEnabled(true); connect(searchBox, SIGNAL(textChanged(QString)), SLOT(searchProduit(QString))); ui->mainToolBar->addSeparator(); ui->mainToolBar->addWidget(searchBox); // Récupération de la configuration QFile saveFile(QDir::homePath()+"/hermes.hrms"); QDataStream content(&saveFile); content.setVersion(QDataStream::Qt_5_0); if(saveFile.open(QFile::ReadOnly)) { QList listInfoProd; content >> listInfoProd; //QMessageBox::information(this, "test", QString::number(listInfoProd.count())); for(ProduitInfo i : listInfoProd) ajouterProduit(new ProduitItem(i.nomProduit, i.dateAchat, i.dateFinGarantie, i.image, i.indexMagasin, i.enSAV, i.factures, i.garanties)); } ui->actionSupprimerProduit->setEnabled(false); } void MainWindow::searchProduit(QString search) { if(search != "") { for(int i = 0; i < ui->listeProduits->count(); i++) { ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i)); ProduitInfo prod = item->getProduitInfo(); // On cache les produits qui ne correspondent pas if(prod.nomProduit.contains(search, Qt::CaseInsensitive)) ui->listeProduits->item(i)->setHidden(false); else ui->listeProduits->item(i)->setHidden(true); } } else { // Si la zone de recherche est vide, on affiche tout for(int i = 0; i < ui->listeProduits->count(); i++) ui->listeProduits->item(i)->setHidden(false); } } void MainWindow::on_actionNouveauProduit_triggered() { ProduitItem *prod = new ProduitItem("Nouveau produit", QDate::currentDate(), QDate::currentDate().addYears(1)); prod->openDialog(); ajouterProduit(prod); } void MainWindow::on_actionSupprimerProduit_triggered() { if(ui->listeProduits->selectedItems().count() == 1) { QListWidgetItem *item = ui->listeProduits->selectedItems()[0]; if(QMessageBox::question(this, "Supprimer le produit", "Êtes-vous sûr de vouloir supprimer ce produit ?\nCette action n'est pas réversible.", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { ui->listeProduits->removeItemWidget(item); delete item; } } } void MainWindow::on_actionGererMagasins_triggered() { GestionMagasinsDialog *dialog = new GestionMagasinsDialog(this); dialog->setModal(true); dialog->show(); } void MainWindow::ajouterProduit(ProduitItem *produit) { QListWidgetItem *widgetItem = new QListWidgetItem(); widgetItem->setSizeHint(produit->getImage().size()); ui->listeProduits->addItem(widgetItem); ui->listeProduits->setItemWidget(widgetItem, produit); } void MainWindow::on_listeProduits_currentRowChanged() { ui->actionSupprimerProduit->setEnabled(true); } void MainWindow::on_actionAPropos_triggered() { AboutDialog *dialog = new AboutDialog(this, version); dialog->setModal(true); dialog->show(); } void MainWindow::on_actionAide_triggered() { QDesktopServices::openUrl(QUrl("http://hermes.deuchnord.tk/help/")); } MainWindow::~MainWindow() { // Enregistrement de la configuration QFile saveFile(QDir::homePath()+"/hermes.hrms"); QDataStream content(&saveFile); content.setVersion(QDataStream::Qt_5_0); QList listProd; if(saveFile.open(QFile::WriteOnly)) { for(int i = 0; i < ui->listeProduits->count(); i++) { ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i)); ProduitInfo prod = item->getProduitInfo(); listProd << prod; } } content << listProd; saveFile.close(); delete ui; }