13 #include <QMessageBox> 17 qDebug() << Q_FUNC_INFO;
36 qDebug() << Q_FUNC_INFO;
41 archives =
new QLabel(
"Archives :",
this);
55 QFont policeBouton(
"", 15, 75,
false);
56 QFont policeTexte(
"", 13, 75,
false);
63 rechercheCampagneArchive->setStyleSheet(
"QLineEdit {border-image: url(design/QLine_200x40.png)}" "QLineEdit:hover {border-image: url(design/QLine_200x40_survole.png)}");
67 boutonImagesArchives->setStyleSheet(
"QPushButton {border-image: url(design/bouton_157x50.png)}" "QPushButton:hover {border-image: url(design/bouton_157x50_survole.png)}");
71 boutonStatistiquesArchives->setStyleSheet(
"QPushButton {border-image: url(design/bouton_157x50.png)}" "QPushButton:hover {border-image: url(design/bouton_157x50_survole.png)}");
75 boutonCreationCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_302x50.png)}" "QPushButton:hover {border-image: url(design/bouton_302x50_survole.png)}");
79 boutonDemarrerCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_302x50.png)}" "QPushButton:hover {border-image: url(design/bouton_302x50_survole.png)}");
83 boutonArchiverCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_199x50.png)}" "QPushButton:hover {border-image: url(design/bouton_199x50_survole.png)}");
87 boutonSupprimerCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_199x50.png)}" "QPushButton:hover {border-image: url(design/bouton_199x50_survole.png)}");
91 listeCampagne->setStyleSheet(
"QComboBox {border-image: url(design/combobox_199x50.png)}" "QComboBox:hover {border-image: url(design/combobox_199x50_survole.png)}" "QComboBox::drop-down {border-image: url(rien.png)}" "QComboBox {padding: 0 0 0 15px}");
98 QVBoxLayout *layoutPrincipal =
new QVBoxLayout;
99 QHBoxLayout *layoutSuperieur =
new QHBoxLayout;
100 QVBoxLayout *layoutCentral =
new QVBoxLayout;
101 QHBoxLayout *layoutConfigurationCampagne =
new QHBoxLayout;
102 QHBoxLayout *layoutCampagne =
new QHBoxLayout;
104 layoutPrincipal->addLayout(layoutSuperieur);
105 layoutSuperieur->addWidget(
archives);
110 layoutPrincipal->addLayout(layoutCentral);
111 layoutCentral->setAlignment(Qt::AlignCenter);
114 layoutPrincipal->addLayout(layoutConfigurationCampagne);
119 layoutPrincipal->addLayout(layoutCampagne);
123 setLayout(layoutPrincipal);
125 setStyleSheet(
"background:#C1BEBE;");
130 qDebug() << Q_FUNC_INFO << qApp->applicationDirPath() +
"/images/Robot.png";
131 logoAccueil->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/Robot.png"));
171 boutonDemarrerCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_302x50.png)}" "QPushButton:hover {border-image: url(design/bouton_302x50_survole.png)}");
174 boutonArchiverCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_199x50.png)}" "QPushButton:hover {border-image: url(design/bouton_199x50_survole.png)}");
177 boutonSupprimerCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_199x50.png)}" "QPushButton:hover {border-image: url(design/bouton_199x50_survole.png)}");
198 QCompleter *completeur =
new QCompleter(liste.toList(),
this);
206 bool retourCampagne, retourPhoto;
208 QString nombrePhotos;
209 QVector<QStringList> informationsPhotos;
211 QString requeteInformationsCampagne =
"SELECT campagne.idCampagne, campagne.nom, campagne.lieu, technicien.nom, technicien.prenom, campagne.date, campagne.duree, campagne.cheminSauvegarde FROM campagne INNER JOIN technicien ON campagne.idTechnicien = technicien.idTechnicien WHERE campagne.enCours = '1' ORDER BY campagne.date DESC";
213 #ifdef DEBUG_BASEDEDONNEES 214 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"requête : ") << requeteInformationsCampagne;
220 for(
int i=0; i < campagnesEnCours.size(); i++)
222 QStringList informationsCampagne = campagnesEnCours.at(i);
223 QString requeteNombrePhotos =
"SELECT COUNT(IdPhoto) FROM photo INNER JOIN campagne ON photo.IdCampagne = campagne.IdCampagne WHERE campagne.IdCampagne = '" + informationsCampagne.at(0) +
"' ";
226 #ifdef DEBUG_BASEDEDONNEES 227 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"%0 %1 %2 %3 %4 %5 %6 %7").arg(informationsCampagne.at(0)).arg(informationsCampagne.at(1)).arg(informationsCampagne.at(2)).arg(informationsCampagne.at(3)).arg(informationsCampagne.at(4)).arg(informationsCampagne.at(5)).arg(informationsCampagne.at(6)).arg(informationsCampagne.at(7));
229 Campagne *campagne =
new Campagne(informationsCampagne.at(1), informationsCampagne.at(2), informationsCampagne.at(3), informationsCampagne.at(4), QDateTime::fromString(informationsCampagne.at(5)),
this, informationsCampagne.at(6).toInt());
234 QString requeteInformationsPhotos =
"SELECT cheminImage, aGarder, dateHeure FROM photo INNER JOIN campagne ON photo.IdCampagne = campagne.IdCampagne WHERE campagne.enCours = '1' AND photo.IdCampagne = '" + informationsCampagne.at(0) +
"'";
235 recupererPhotos(retourPhoto, requeteInformationsPhotos, informationsPhotos);
238 for(
int i=0; i < informationsPhotos.size(); i++)
240 QStringList informationPhoto = informationsPhotos.at(i);
243 photo.
aGarder = informationPhoto.at(1).toInt();
244 photo.
image = QPixmap(informationPhoto.at(0));
245 photo.
dateheure = QDateTime::fromString(informationPhoto.at(2));
251 informationsPhotos.clear();
256 #ifdef DEBUG_BASEDEDONNEES 257 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
266 for(QVector<Campagne*>::iterator it =
campagnesEnCours.begin(); n < nbCampagnes; it++)
280 bool retourRequeteIdCampagne;
282 QString requeteIdCampagne =
"SELECT idCampagne FROM campagne WHERE campagne.nom = '" +
listeCampagne->currentText() +
"'";
286 if(!retourRequeteIdCampagne)
288 #ifdef DEBUG_BASEDEDONNEES 289 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
299 QVector<QString> photoASupprimer;
301 for(QVector<QString>::Iterator it = photoASupprimer.begin(); it != photoASupprimer.end(); ++it)
303 QFile::remove((*it));
315 if(qDir.exists((*it)->getCheminSauvegarde() +
"/" + (*it)->getNomCampagne()))
317 if(!qDir.rmdir((*it)->getCheminSauvegarde() +
"/" + (*it)->getNomCampagne()))
319 qDebug() << Q_FUNC_INFO <<
"Erreur : impossible de supprimer le dossier" << (*it)->getCheminSauvegarde() +
"/" + (*it)->getNomCampagne();
320 QMessageBox::critical(
this,
"Erreur",
"Erreur : impossible de supprimer le dossier " + (*it)->getCheminSauvegarde() +
"/" + (*it)->getNomCampagne() +
" !");
330 if(dossierCampagne.exists())
337 QMessageBox::critical(
this,
"Erreur",
"Erreur : impossible de créer le dossier " + campagne->
getCheminSauvegarde() +
" !");
348 #ifdef DEBUG_BASEDEDONNEES 354 QString idTechnicien;
355 QString requeteId =
"SELECT technicien.IdTechnicien FROM technicien WHERE technicien.nom = '" + campagne->
getNomTechnicien() +
"' AND technicien.prenom = '" + campagne->
getPrenomTechnicien() +
"'";
364 QString requeteInsertionCampagne =
"INSERT INTO campagne (idTechnicien, nom, lieu, date, duree, enCours, cheminSauvegarde) VALUES ('" + idTechnicien +
"', '" + campagne->
getNomCampagne() +
"', '" + campagne->
getLieu() +
"', '" + campagne->
getDate().toString() +
"', '" + QString::number(campagne->
getDuree()) +
"', '1', '" + campagne->
getCheminSauvegarde() +
"')";
370 QString idCampagne, requeteUpdateDuree, requeteIdCampagne, requeteInsertionMesures, requeteModifierPhotos;
372 requeteUpdateDuree =
"UPDATE campagne SET duree = '"+ QString::number(campagne->
getDuree()) +
"' WHERE campagne.nom = '" + campagne->
getNomCampagne() +
"'";
375 requeteIdCampagne =
"SELECT campagne.idCampagne FROM campagne WHERE campagne.nom = '" + campagne->
getNomCampagne() +
"'";
380 requeteModifierPhotos =
"UPDATE photo set aGarder = '" + QString::number(campagne->
getAlbumPhoto()[i].aGarder) +
"' WHERE cheminImage = '" + campagne->
getAlbumPhoto()[i].cheminSauvegarde +
"'";
389 QString requeteIdCampagne =
"SELECT IdCampagne FROM campagne WHERE campagne.nom = '" + campagne->
getNomCampagne() +
"'";
392 QString requeteInsertion =
"INSERT INTO photo (idCampagne, cheminImage, aGarder, dateHeure) VALUES ('" + idCampagne +
"', '" + photo.
cheminSauvegarde +
"', '1', '" + photo.
dateheure.toString() +
"')";
406 this->setVisible(
false);
414 QVector<QStringList> listeTechniciens;
415 QString requete =
"SELECT technicien.nom, technicien.prenom FROM technicien";
420 ihmCreationCampagne->setFixedSize(416,278);
421 ihmCreationCampagne->exec();
427 bool retourRequeteArchiver;
428 bool retourRequeteSuppressionPhoto;
429 QString requeteArchiver, requeteSuppressionPhoto;
433 requeteArchiver =
"UPDATE campagne SET enCours = '0' WHERE campagne.nom = '" +
listeCampagne->currentText() +
"'";
434 requeteSuppressionPhoto =
"DELETE FROM photo WHERE photo.IdCampagne = '" +
recupererIdCampagne() +
"' AND photo.aGarder = '0'";
439 if(!retourRequeteArchiver && !retourRequeteSuppressionPhoto)
441 #ifdef DEBUG_BASEDEDONNEES 442 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
452 bool retourRequeteSuppressionMesures;
453 bool retourRequeteSuppressionPhotos;
454 bool retourRequeteSuppressionCampagne;
460 QString requeteSuppressionMesures =
"DELETE FROM mesure WHERE mesure.IdCampagne = '" +
recupererIdCampagne() +
"'";
461 QString requeteSuppressionPhotos =
"DELETE FROM photo WHERE photo.IdCampagne = '" +
recupererIdCampagne() +
"'";
462 QString requeteSuppressionCampagne =
"DELETE FROM campagne WHERE campagne.IdCampagne = '" +
recupererIdCampagne() +
"'";
468 if(!retourRequeteSuppressionMesures && !retourRequeteSuppressionPhotos && !retourRequeteSuppressionCampagne)
470 #ifdef DEBUG_BASEDEDONNEES 471 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
481 bool retourRequeteEnregistrementMesure;
483 QString requeteEnregistrementMesure =
"INSERT INTO mesure (idCampagne, heure, temperature, radiation, humidite) VALUES (" +
recupererIdCampagne() +
",'" + QDateTime::currentDateTime().toString() +
"'," + temperature +
"," + radiation +
"," + humidite +
")";
487 if(!retourRequeteEnregistrementMesure)
489 #ifdef DEBUG_BASEDEDONNEES 490 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
497 #ifdef DEBUG_BASEDEDONNEES 498 qDebug() << Q_FUNC_INFO;
502 QVector<QString> listeCampagnesRecherchees;
504 bool retourRequeteRechercheCampagne;
506 QString requeteRechercheCampagne =
"SELECT campagne.nom FROM campagne WHERE campagne.nom LIKE '" + texte +
"%' AND campagne.enCours = '0'";
508 retourRequeteRechercheCampagne =
baseDeDonnees->
recuperer(requeteRechercheCampagne, listeCampagnesRecherchees);
510 if(!retourRequeteRechercheCampagne)
512 #ifdef DEBUG_BASEDEDONNEES 513 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"erreur !");
524 QStringList cheminSauvegarde;
525 QString requete =
"SELECT campagne.cheminSauvegarde, campagne.nom FROM campagne WHERE campagne.nom = '" +
rechercheCampagneArchive->text() +
"'";
531 if(!(QDesktopServices::openUrl(QUrl(cheminSauvegarde.at(0) +
"/" + cheminSauvegarde.at(1), QUrl::TolerantMode))))
532 QMessageBox::critical(
this,
"Erreur",
"Erreur : Chemin introuvable ");
536 QMessageBox::critical(
this,
"Erreur",
"Erreur : Nom de campagne introuvable ");
542 QVector<QStringList> mesures;
543 QString requete =
"SELECT mesure.heure, mesure.radiation, mesure.temperature, mesure.humidite FROM mesure INNER JOIN campagne ON campagne.IdCampagne = mesure.IdCampagne WHERE campagne.nom = '" +
rechercheCampagneArchive->text() +
"'";
549 if(!mesures.isEmpty())
552 ihmGraphique->show();
556 QMessageBox::critical(
this,
"Erreur",
"Erreur : Aucune données trouvées !");
void demarrerCampagne()
Permet de démarrer ou reprendre une campagne non archivé
void rechercherCampagne(QString texte)
Fait une recherche des noms dans la base de données correspondants au texte.
void initialisationWidgets()
Initialise les widgets de l'IHM.
Fichier qui contient la déclaration de la classe Campagne.
void creerCampagne()
Permet de créer une nouvelle campagne.
void configurerWidgets()
Configure les widgets de l'IHM.
QString getCheminSauvegarde() const
Retourne le chemin du dossier de sauvegarde des photos.
Fichier qui contient la déclaration de la classe IHMCreationCampagne.
void ajouterPhoto(Photo &photo)
Ajoute une photo dans l'album photo.
void gererCampagne()
Arrête la campagne en cours.
void recupererCampagneEnCours(bool &retourCampagne, QString &requeteInformationsCampagne, QVector< QStringList > &campagnesEnCours)
Récupère les campagnes en cours dans la base de données, le paramètre campagnesEnCours passé en référ...
static void detruireInstance()
Permet de detruire l'instance en cours, Static elle est accessible depuis n'importe où ...
void initialisationDesignWidgets()
Initialise les design des widgets de l'IHM.
void setCampagne(Campagne *campagne)
Associe une campagne a la campagne en cours du rov.
IHM permettant d'obtenir le flux vidéo en direct placé sur le robot et d'obtenir les informations rel...
bool ouvrir(QString fichierBase)
Permet d'ouvrir le fichier de base de données passé en paramètre.
void recupererNbPhotos(QString &nombrePhotos, QString &requeteNombrePhotos)
Récupère le nombre de photos dans la base de données, le paramètre nombrePhotos passé en référence ré...
void chargerCampagnes()
Récupere la liste des noms de campagne non terminés et ajoute les nom de la liste des campagnes dispo...
void supprimerCampagneListe()
Permet de supprimer de lq liste la campagne selectionné
QPushButton * boutonSupprimerCampagne
Bouton permettant de supprimmer la campagne sélectionner.
void initialiserLayouts()
Initialise les layouts de l'IHM.
void ajouterCampagne(Campagne *campagne, bool verification=false)
Ajoute une nouvelle campagne dans la liste des campagne non archivés.
QPixmap image
Image de la photo.
QLabel * logoAccueil
Logo de l'IHM accueil.
QString getLieu() const
Retourne le lieu de la campagne.
QString getPrenomTechnicien() const
Retourne le prenom du technicien.
void supprimerDossierPhotoLocal()
Supprime le dossier photo si il est vide.
void supprimerMesures()
Supprime les mesure du conteneur de Mesure, une fois celles-ci archivés dans la BDD.
QComboBox * listeCampagne
Liste des campagnes créer et non archivés.
void modifierCampagneBDD(Campagne *campagne)
Met à jour les informations de la campagne lors de l'arret de celle-ci dans la BDD.
QString recupererIdCampagne()
Recupere l'id de la campagne séléctionné dans la liste.
void ouvrirGraphiques()
Ouvre l'ihm des graphiques correspondant à la misssion saisie.
QDateTime getDate() const
Retourne la date de la campagne.
#define NOM_FENETRE_ACCUEIL
Class contenant les informations de la campagne en cours.
void ouvrirArchive()
Ouvre le dossier des archvies correspondante à la mission saisie.
void recupererPhotos(bool &retourPhoto, QString &requeteInformationsPhotos, QVector< QStringList > &informationsPhotos)
Récupère les photos associés a une campagne dans la base de données, le paramètre informationsPhotos ...
Fichier qui contient la déclaration de la classe IHMGraphiques.
QLineEdit * rechercheCampagneArchive
Zone de recherche des campagnes archivés.
QString cheminSauvegarde
Chemin de sauvegarde de la photo.
void supprimerCampagne()
Permet d'archiver la campagne dans la base de données.
QString getNomTechnicien() const
Retourne le nom du technicien.
static BaseDeDonnees * getInstance(QString type="QSQLITE")
Permet de créer une instance de BDD ou de récuperer celle deja en cours, cette méthode controle l'ins...
bool aGarder
Booléen afin de savoir si la photo sera archivé ou non.
Fichier qui contient la déclaration de la classe BaseDeDonnees.
QVector< Campagne * > campagnesEnCours
Conteneur des campagnes non archivés.
bool recuperer(QString requete, QString &donnees)
Permet d'executer la requete passé en paramètre au format SQL, et remplit le QString de sa réponse...
QLabel * archives
Texte indiquant la zone de gestation des archives.
Class permettant de visualiser les graphiques des campagnes archivés.
void rechargerListeCampagnes()
Recharge la liste des campagnes en cours.
void supprimerPhotoLocal(QString requete)
Selectionne les chemin d'accès des photo à supprimer dans la base de données et les supprime en local...
Fichier qui contient la déclaration de la classe IHMAccueil.
Class permettant de créer une nouvelle campagne.
QString getNomCampagne() const
Retourne le nom de la campagne.
int getDuree() const
Retourne la durée de la campagne.
IHMRov * ihmRov
Instance d'un objet ihmRov.
QPushButton * boutonCreationCampagne
Bouton permettant de créer une nouvelle campagne.
QVector< Photo > getAlbumPhoto() const
Retourne l'album photo de la campagne.
IHMAccueil(QWidget *parent=nullptr)
Constructeur de la classe IHMAccueil.
void ajouterPhotoBDD(Photo &photo, Campagne *campagne)
Ajoute la photo prise dans la BDD associé a la campagne.
void setNombrePhotos(int nombre)
Modifie le nombre de photos prises durant la campagne.
Fichier qui contient la déclaration de la classe IHMRov.
structure contenant les informations d'une photo de campagne
~IHMAccueil()
Destructeur de la classe IHMAccueil.
void setCheminSauvegarde(QString chemin)
Modifie le chemin de sauvegarde des photos.
bool executer(QString requete)
Permet d'executer la requete passé en paramètre au format SQL.
void archiverCampagne()
Permet d'archiver la campagne selectionner.
QPushButton * boutonArchiverCampagne
Bouton permettant d'archiver la campagne sélectionner.
BaseDeDonnees * baseDeDonnees
Instance d'un objet BaseDeDonnees permettant d'acceder a la BDD.
QPushButton * boutonStatistiquesArchives
Bouton permettant de configurer le matériel.
void enregisterMesureBDD(QString temperature, QString humidite, QString radiation)
enregistre les mesures recues dans la base de données
QPushButton * boutonImagesArchives
Bouton permettant d'accéder aux archives.
QPushButton * boutonDemarrerCampagne
Bouton permettant de démarrer ou reprendre la campagne seléctionner.
void initialiserEvenements()
Initialise les evenements de l'IHM.
QDateTime dateheure
Date/Heure de la photo.
void construireListe(QVector< QString > liste)
Construit la liste déroulante des campagnes sélectionnées.
void enregistrerCampagneBDD(Campagne *campagne)
Enregistre les informations de la campagne dans la BDD.