diff --git a/deuchnord-hermes.pro b/deuchnord-hermes.pro index e5d725e..df17080 100644 --- a/deuchnord-hermes.pro +++ b/deuchnord-hermes.pro @@ -22,7 +22,8 @@ SOURCES += main.cpp\ gestionmagasinsdialog.cpp \ aboutdialog.cpp \ scannerdialog.cpp \ - settingsdialog.cpp + settingsdialog.cpp \ + manufacturersmanager.cpp HEADERS += mainwindow.h \ produititem.h \ @@ -30,7 +31,8 @@ HEADERS += mainwindow.h \ gestionmagasinsdialog.h \ aboutdialog.h \ scannerdialog.h \ - settingsdialog.h + settingsdialog.h \ + manufacturersmanager.h FORMS += mainwindow.ui \ produititem.ui \ diff --git a/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-05-23).user b/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-05-23).user deleted file mode 100644 index 1aeb07d..0000000 --- a/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-05-23).user +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8a6bac83-397a-433b-b12b-aaf345693483} - 1 - 0 - 0 - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:/home/jerome/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - true - false - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {44abd538-5b46-4276-b819-6072e04c10d4} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-06-12).user b/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-06-12).user deleted file mode 100644 index 5cfc4a0..0000000 --- a/deuchnord-hermes.pro (Copie en conflit de jerome-XPS-L501X 2014-06-12).user +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8a6bac83-397a-433b-b12b-aaf345693483} - 0 - 0 - 0 - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:/home/jerome/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - true - false - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {44abd538-5b46-4276-b819-6072e04c10d4} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/deuchnord-hermes.pro.user b/deuchnord-hermes.pro.user deleted file mode 100644 index d6d8eb1..0000000 --- a/deuchnord-hermes.pro.user +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.2.1 MinGW 32bit - Desktop Qt 5.2.1 MinGW 32bit - qt.521.win32_mingw48.essentials_kit - 1 - 0 - 0 - - C:/Users/Jérôme/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop_Qt_5_2_1_MinGW_32bit-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - - 2 - Compiler - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - - 1 - Nettoyer - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - C:/Users/Jérôme/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop_Qt_5_2_1_MinGW_32bit-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - - 2 - Compiler - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - - 1 - Nettoyer - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Déploiement - - ProjectExplorer.BuildSteps.Deploy - - 1 - Déployer localement - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Jérôme/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {60f16766-9e87-40cf-8f8f-b733441f2614} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/deuchnord-hermes.pro.user.44abd53 b/deuchnord-hermes.pro.user.44abd53 deleted file mode 100644 index b69a304..0000000 --- a/deuchnord-hermes.pro.user.44abd53 +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8a6bac83-397a-433b-b12b-aaf345693483} - 1 - 0 - 0 - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:/home/jerome/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - true - false - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {44abd538-5b46-4276-b819-6072e04c10d4} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/deuchnord-hermes.pro.user.60f1676 b/deuchnord-hermes.pro.user.60f1676 deleted file mode 100644 index bc9e952..0000000 --- a/deuchnord-hermes.pro.user.60f1676 +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.2.1 MinGW 32bit - Desktop Qt 5.2.1 MinGW 32bit - qt.521.win32_mingw48.essentials_kit - 1 - 0 - 0 - - C:/Users/Jérôme/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop_Qt_5_2_1_MinGW_32bit-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - - 2 - Compiler - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - - 1 - Nettoyer - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - C:/Users/Jérôme/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop_Qt_5_2_1_MinGW_32bit-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - - 2 - Compiler - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - - 1 - Nettoyer - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Déploiement - - ProjectExplorer.BuildSteps.Deploy - - 1 - Déployer localement - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Jérôme/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {60f16766-9e87-40cf-8f8f-b733441f2614} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/deuchnord-hermes.pro.user.81ef902 b/deuchnord-hermes.pro.user.81ef902 deleted file mode 100644 index 2ae299e..0000000 --- a/deuchnord-hermes.pro.user.81ef902 +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8a6bac83-397a-433b-b12b-aaf345693483} - 0 - 0 - 0 - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/jerome/Dropbox/Git/Hermes/build-deuchnord-hermes-Desktop-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - deuchnord-hermes - - Qt4ProjectManager.Qt4RunConfiguration:/home/jerome/Dropbox/Git/Hermes/deuchnord-hermes/deuchnord-hermes.pro - - deuchnord-hermes.pro - false - false - - 3768 - true - false - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {81ef902a-0963-4a87-b37c-5a785cdf71d5} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/infosproduitdialog.cpp b/infosproduitdialog.cpp index 55af783..a6dbf22 100644 --- a/infosproduitdialog.cpp +++ b/infosproduitdialog.cpp @@ -13,6 +13,8 @@ #include #include +#include + InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QString nomProduit, QDate dateAchat, QDate dateFinGarantie, QPixmap image, int indexMagasin, bool enSAV, QHash facturePDF, QHash garantiePDF) : QDialog(mainWindow), ui(new Ui::InfosProduitDialog) @@ -20,9 +22,6 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt ui->setupUi(this); parentWidget = parent; - // On ajoute une ligne vide, correspondant à un magasin non renseigné. Il correspond à un indexMagasin de -1 - ui->comboMagasin->addItem(""); - // Récupération de la liste des magasins enregistrés QSettings *settings = new QSettings("Deuchnord", "Hermes"); QFile fichierMagasins(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); @@ -60,7 +59,7 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt ui->checkGarantieAVie->setChecked(true); } - ui->comboMagasin->setCurrentIndex(indexMagasin+1); + ui->comboMagasin->setCurrentIndex(indexMagasin); ui->checkSAV->setChecked(enSAV); ui->image->setPixmap(image); this->image = image; @@ -279,7 +278,72 @@ void InfosProduitDialog::on_buttonBox_accepted() getParentItem()->setDateFinGarantie(QDate(1970, 1, 1)); getParentItem()->setImage(this->image); - getParentItem()->setMagasin(ui->comboMagasin->currentIndex()-1); + + QSettings *settings = new QSettings("Deuchnord", "Hermes"); + QFile fichierMagasins(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); + bool manufacturerAllreadyExists = false; + QDomDocument dom; + QDomElement root, manufacturer; + QDomNode node; + + if(fichierMagasins.open(QFile::ReadOnly)) { + + QString contenuFichier = fichierMagasins.readAll(); + fichierMagasins.close(); + + dom.setContent(contenuFichier); + root = dom.firstChildElement(); + node = root.firstChild(); + + while(!node.isNull()) + { + manufacturer = node.toElement(); + if(manufacturer.tagName() == "manufacturer") + if(ui->comboMagasin->currentText() == manufacturer.firstChild().toText().data()) + manufacturerAllreadyExists = true; + + node = node.nextSibling(); + } + } + + if(!manufacturerAllreadyExists) { + + dom = QDomDocument("manufacturers"); + root = dom.createElement("manufacturers"); + dom.appendChild(root); + + // Boucle d'enregistrement des éléments du combo + for(int i = 0; i < ui->comboMagasin->count(); i++) { + + QDomElement domManufacturer = dom.createElement("manufacturer"); + root.appendChild(domManufacturer); + QDomText textManufacturer = dom.createTextNode(ui->comboMagasin->itemText(i)); + domManufacturer.appendChild(textManufacturer); + + } + + // Enregistrement du nouveau magasin + QDomElement domNewManufacturer = dom.createElement("manufacturer"); + root.appendChild(domNewManufacturer); + QDomText textNewManufacturer = dom.createTextNode(ui->comboMagasin->currentText()); + domNewManufacturer.appendChild(textNewManufacturer); + + // Enregistrement du fichier XML + QFile fileManufacturers(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); + if(fileManufacturers.open(QFile::WriteOnly)) { + + fileManufacturers.write(dom.toString().toUtf8()); + fileManufacturers.close(); + + } + + getParentItem()->setMagasin(ui->comboMagasin->count()); + + } + + else + getParentItem()->setMagasin(ui->comboMagasin->currentIndex()); + getParentItem()->setEnSAV(ui->checkSAV->isChecked()); getParentItem()->setFactures(this->facturePDF); getParentItem()->setGaranties(this->garantiePDF); diff --git a/infosproduitdialog.ui b/infosproduitdialog.ui index 4297a99..6dba480 100644 --- a/infosproduitdialog.ui +++ b/infosproduitdialog.ui @@ -73,7 +73,11 @@ - + + + true + + diff --git a/mainwindow.cpp b/mainwindow.cpp index a28968c..73bef6e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -33,7 +33,7 @@ MainWindow::MainWindow(QWidget *parent) : saveOnQuit = true; - version = "0.5.1"; + version = "0.6"; searchBox = new QLineEdit(this); searchBox->addAction(QIcon(":/icons/icon-search.png"), QLineEdit::LeadingPosition); @@ -138,45 +138,12 @@ void MainWindow::searchProduit(QString search) void MainWindow::on_actionNouveauProduit_triggered() { - QFile fichierMagasins(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); - fichierMagasins.open(QFile::ReadOnly); - int nbMagasins = 0; - - if(fichierMagasins.isOpen()) - { - QString contenuFichier = fichierMagasins.readAll(); - fichierMagasins.close(); - - QDomDocument dom; - dom.setContent(contenuFichier); - QDomElement root = dom.firstChildElement(); - QDomElement manufacturer; - QDomNode node = root.firstChild(); - - while(!node.isNull()) - { - manufacturer = node.toElement(); - if(manufacturer.tagName() == "manufacturer") - nbMagasins++; - - node = node.nextSibling(); - } - } - - if(nbMagasins == 0) - { - QMessageBox::critical(this, tr("Erreur"), tr("Aucun magasin ne semble avoir été enregistré.\nVeuillez les enregistrer avant d'entrer vos produits.")); - ui->actionGererMagasins->trigger(); - } - else - { - ProduitItem *prod = new ProduitItem(this, tr("Nouveau produit", "Showed in the field \"Name\" in the product information window by default."), QDate::currentDate(), QDate::currentDate().addYears(1)); - prod->openDialog(true); - QListWidgetItem* item = ajouterProduit(prod); - item->setSelected(true); - connect(prod, SIGNAL(deleteAsked()), SLOT(deleteAsked())); - ui->actionSupprimerProduit->setEnabled(true); - } + ProduitItem *prod = new ProduitItem(this, tr("Nouveau produit", "Showed in the field \"Name\" in the product information window by default."), QDate::currentDate(), QDate::currentDate().addYears(1)); + prod->openDialog(true); + QListWidgetItem* item = ajouterProduit(prod); + item->setSelected(true); + connect(prod, SIGNAL(deleteAsked()), SLOT(deleteAsked())); + ui->actionSupprimerProduit->setEnabled(true); } void MainWindow::deleteAsked() @@ -199,6 +166,28 @@ void MainWindow::on_actionSupprimerProduit_triggered(bool dontAskConfirm) if(answer == QMessageBox::Yes) { ui->listeProduits->setCurrentRow(ui->listeProduits->row(item)); + + // Étape 1 : on vérifie si le magasin du produit est encore utilisé par d'autres produits + ProduitItem prodToRemove = ((ProduitItem) ui->listeProduits->itemWidget(item)); + int manufacturer = prodToRemove.getMagasin(); + bool manufacturerIsUsedByAnotherProduct = false; + for(int i = 0; i < ui->listeProduits->count(); i++) { + + if(i != ui->listeProduits->currentRow()) { + + QListWidgetItem *itemProd = ui->listeProduits->item(i); + ProduitItem prod = (ProduitItem) ui->listeProduits->itemWidget(itemProd); + if(prod.getMagasin() == manufacturer) + manufacturerIsUsedByAnotherProduct = true; + + } + + } + + // Si le magasin n'est plus utilisé, on le supprime + // TODO écrire le code correspondant + + // Étae 2 : on suppprime le produit ui->listeProduits->removeItemWidget(item); delete item; diff --git a/manufacturersmanager.cpp b/manufacturersmanager.cpp new file mode 100644 index 0000000..705e2cd --- /dev/null +++ b/manufacturersmanager.cpp @@ -0,0 +1,79 @@ +#include "manufacturersmanager.h" + +#include +#include +#include +#include +#include + +ManufacturersManager::ManufacturersManager() +{ + QSettings *settings = new QSettings("Deuchnord", "Hermes"); + QFile fichierMagasins(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); + fichierMagasins.open(QFile::ReadOnly); + if(fichierMagasins.isOpen()) + { + QString contenuFichier = fichierMagasins.readAll(); + fichierMagasins.close(); + + QDomDocument dom; + dom.setContent(contenuFichier); + QDomElement root = dom.firstChildElement(); + QDomElement manufacturer; + QDomNode node = root.firstChild(); + + while(!node.isNull()) + { + manufacturer = node.toElement(); + if(manufacturer.tagName() == "manufacturer") + manufacturers.append(manufacturer.firstChild().toText().data()); + + node = node.nextSibling(); + } + } +} + +void ManufacturersManager::addManufacturer(QString manufacturer) { + + manufacturers.append(manufacturer); + +} + +QList ManufacturersManager::getManufacturers() { + + return manufacturers; + +} + +void ManufacturersManager::deleteManufacturer(int manufacturerToDelete) { + + manufacturers.removeAt(manufacturerToDelete); + +} + +ManufacturersManager::save() { + + QDomDocument dom("manufacturers"); + QDomElement rootElement = dom.createElement("manufacturers"); + dom.appendChild(rootElement); + + for(QString manufacturer : manufacturers) { + + QDomElement domManufacturer = dom.createElement("manufacturer"); + root.appendChild(domManufacturer); + QDomText textManufacturer = dom.createTextNode(manufacturer); + domManufacturer.appendChild(textManufacturer); + + } + + QSettings *settings = new QSettings("Deuchnord", "Hermes"); + QFile fichierMagasins(settings->value("placeSave").toString()+"/deuchnord-hermes/manufacturers.xml"); + + if(fichierMagasins.open(QFile::WriteOnly)) { + + fichierMagasins.write(dom.toString().toUtf8()); + fichierMagasins.close(); + + } + +} diff --git a/manufacturersmanager.h b/manufacturersmanager.h new file mode 100644 index 0000000..74566bd --- /dev/null +++ b/manufacturersmanager.h @@ -0,0 +1,21 @@ +#ifndef MANUFACTURERSMANAGER_H +#define MANUFACTURERSMANAGER_H + +#include + +class ManufacturersManager +{ + +public: + explicit ManufacturersManager(); + void addManufacturer(QString manufacturer); + QList getManufacturers(); + void deleteManufacturer(int manufacturerToDelete); + void save(); + +private: + QList manufacturers; + +}; + +#endif // MANUFACTURERSMANAGER_H