18 qDebug() << Q_FUNC_INFO <<
this <<
"width" << qApp->desktop()->screen()->width() <<
"height" << qApp->desktop()->screen()->height();
34 qDebug() << Q_FUNC_INFO;
39 fluxVideo =
new QLabel(
"Aucune image détéctée",
this);
42 boutonCampagne =
new QPushButton(QString::fromUtf8(
"Démarrer"),
this);
52 portSerie =
new QLabel(
"Port série :",
this);
53 camera =
new QLabel(
"Caméra :",
this);
54 manette =
new QLabel(
"Manette :",
this);
60 radiation =
new QLabel(
"Radiation\n",
this);
62 QFont police1(
"", 15, 75,
false);
63 QFont police2(
"Cursive", 12, 40,
true);
79 photosEnCours->setStyleSheet(
"QPushButton {border-image: url(design/bouton_230x50.png)}" "QPushButton:hover {border-image: url(design/bouton_230x50_survole.png)}");
84 boutonReglageVideo->setStyleSheet(
"QPushButton {border-image: url(design/bouton_230x50.png)}" "QPushButton:hover {border-image: url(design/bouton_230x50_survole.png)}");
89 boutonCampagne->setStyleSheet(
"QPushButton {border-image: url(design/bouton_230x50.png)}" "QPushButton:hover {border-image: url(design/bouton_230x50_survole.png)}");
94 boutonConfiguration->setStyleSheet(
"QPushButton {border-image: url(design/bouton_230x50.png)}" "QPushButton:hover {border-image: url(design/bouton_230x50_survole.png)}");
102 #ifdef PAS_DE_MANETTE 106 testCapturePhoto->setStyleSheet(
"QPushButton {border-image: url(design/bouton_230x50.png)}" "QPushButton:hover {border-image: url(design/bouton_230x50_survole.png)}");
107 QAction *actionCapturerPhoto =
new QAction(
this);
108 actionCapturerPhoto->setShortcut(QKeySequence(Qt::Key_C));
109 addAction(actionCapturerPhoto);
110 connect(actionCapturerPhoto, SIGNAL(triggered()),
this, SLOT(
capturerImage()));
116 int width = int(qApp->desktop()->screen()->width() *
RATIO);
117 int height = int(qApp->desktop()->screen()->height() *
RATIO);
120 fluxVideo->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
121 fluxVideo->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/signal-interrompu.jpg"));
123 logoEtatPortSerie->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
126 logoEtatCamera->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
129 logoEtatManette->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
138 zoneEtatMateriel->setStyleSheet(
"QGroupBox {background: white} QGroupBox{border: 2px solid black}");
139 zoneInformationSeuils->setStyleSheet(
"QGroupBox {background: white} QGroupBox{border: 2px solid black}");
140 portSerie->setStyleSheet(
"QLabel {background: white}");
141 camera->setStyleSheet(
"QLabel {background: white}");
142 manette->setStyleSheet(
"QLabel {background: white}");
144 etatCamera->setStyleSheet(
"QLabel {background: white}");
145 etatManette->setStyleSheet(
"QLabel {background: white}");
151 temperature->setStyleSheet(
"QLabel {background: white}");
152 radiation->setStyleSheet(
"QLabel {background: white}");
157 QVBoxLayout *layoutPrincipal =
new QVBoxLayout;
158 QHBoxLayout *layoutInformationRov =
new QHBoxLayout;
159 QVBoxLayout *layoutCamera =
new QVBoxLayout;
160 QVBoxLayout *layoutOptionVideo =
new QVBoxLayout;
161 QVBoxLayout *layoutGestionCampagne =
new QVBoxLayout;
162 QVBoxLayout *layoutReglageVideo =
new QVBoxLayout;
163 QVBoxLayout *layoutInformationMateriel =
new QVBoxLayout;
164 QHBoxLayout *layoutEtatPortSerie =
new QHBoxLayout;
165 QHBoxLayout *layoutEtatCamera =
new QHBoxLayout;
166 QHBoxLayout *layoutEtatManette =
new QHBoxLayout;
167 QHBoxLayout *layoutInformationSeuils =
new QHBoxLayout;
168 QVBoxLayout *layoutSeuilTemperature =
new QVBoxLayout;
169 QVBoxLayout *layoutSeuilRadiation =
new QVBoxLayout;
171 layoutOptionVideo->setAlignment(Qt::AlignTop);
172 layoutGestionCampagne->setAlignment(Qt::AlignBottom);
173 layoutInformationMateriel->setAlignment(Qt::AlignTop);
179 #ifdef PAS_DE_MANETTE 183 layoutInformationMateriel->addWidget(
portSerie);
184 layoutInformationMateriel->addLayout(layoutEtatPortSerie);
185 layoutInformationMateriel->addWidget(
camera);
186 layoutInformationMateriel->addLayout(layoutEtatCamera);
187 layoutInformationMateriel->addWidget(
manette);
188 layoutInformationMateriel->addLayout(layoutEtatManette);
190 layoutEtatPortSerie->setAlignment(Qt::AlignLeft);
191 layoutEtatCamera->setAlignment(Qt::AlignLeft);
192 layoutEtatManette->setAlignment(Qt::AlignLeft);
206 layoutSeuilRadiation->addWidget(
radiation);
209 layoutInformationSeuils->addLayout(layoutSeuilTemperature);
210 layoutInformationSeuils->addLayout(layoutSeuilRadiation);
213 layoutPrincipal->addLayout(layoutInformationRov);
214 layoutInformationRov->addLayout(layoutCamera);
215 layoutInformationRov->addStretch();
216 layoutInformationRov->addLayout(layoutReglageVideo);
217 layoutReglageVideo->addLayout(layoutOptionVideo);
226 layoutReglageVideo->addLayout(layoutGestionCampagne);
230 setLayout(layoutPrincipal);
231 resize(width(),
fluxVideo->maximumHeight());
233 setStyleSheet(
"background:#C1BEBE;");
235 setWindowFlags(windowFlags() & ~Qt::WindowCloseButtonHint);
244 #ifdef PAS_DE_MANETTE 248 connect(
rov, SIGNAL(enregistrerMesures(QString, QString, QString)),
ihmAccueil, SLOT(enregisterMesureBDD(QString, QString, QString)));
256 QFont fontHaut(
"Open Sans");
257 QFont fontBas(
"Open Sans");
259 pen.setWidth(qApp->desktop()->screen()->width() * 0.005);
265 fontHaut.setPixelSize(image.height()*0.045);
266 fontBas.setPixelSize(fontHaut.pixelSize()*0.75);
280 QRect bandeauHaut( 0, 0, image.width(), image.height()*0.05 );
281 QRect bandeauBas( 0, image.height()*0.95, image.width(), image.height()*0.05 );
282 penCadre.setBrush(QBrush(QColor(255, 255, 255, 255)));
284 p.fillRect(bandeauHaut, QBrush(QColor(128, 128, 128, 64)));
285 p.fillRect(bandeauBas, QBrush(QColor(128, 128, 128, 64)));
288 QRect bandeauHautGauche( 0, 0, image.width()*0.25, image.height()*0.05 );
289 QRect bandeauHautCentre( image.width()*0.25, 0, image.width()*0.5, image.height()*0.05 );
290 QRect bandeauHautDroite( image.width()*0.75, 0, image.width()*0.25, image.height()*0.05 );
293 QRect bandeauBasGauche( 0, image.height()*0.95, image.width()*0.25, image.height()*0.05 );
294 QRect bandeauBasCentreGauche( image.width()*0.25, image.height()*0.95, image.width()*0.25, image.height()*0.05 );
295 QRect bandeauBasCentreDroite( image.width()*0.50, image.height()*0.95, image.width()*0.25, image.height()*0.05 );
296 QRect bandeauRadar( image.width()*0.75, image.height() - image.width()*0.25, image.width()*0.25, image.width()*0.25);
297 QRect bandeauBasDroite( image.width()*0.75, image.height()*0.95, image.width()*0.25, image.height()*0.05 );
321 pen.setBrush(Qt::darkRed);
325 marge = image.width()*0.0025;
326 QRect cadreLogoHorloge( bandeauHautGauche.x(), bandeauHautGauche.y(), bandeauHautGauche.width()*0.1, bandeauHautGauche.height() );
327 cadreLogoHorloge.adjust(marge, marge, -marge, -marge);
328 QImage logoHeure(qApp->applicationDirPath() +
"/images/logo_heure.png");
329 p.drawImage(cadreLogoHorloge, logoHeure);
330 p.drawText(bandeauHautGauche, Qt::AlignHCenter|Qt::AlignVCenter, QTime::currentTime().toString());
332 QRect cadreLogoDuree( bandeauHautDroite.x(), bandeauHautDroite.y(), bandeauHautDroite.width()*0.1, bandeauHautGauche.height() );
333 cadreLogoDuree.adjust(marge, marge, -marge, -marge);
334 QImage logoDuree(qApp->applicationDirPath() +
"/images/logo_duree.png");
335 p.drawImage(cadreLogoDuree, logoDuree);
339 QRect cadreLogoTemperature( bandeauBasGauche.x(), bandeauBasGauche.y(), bandeauBasGauche.width()*0.1, bandeauBasGauche.height() );
340 cadreLogoTemperature.adjust(marge, marge, -marge, -marge);
341 QImage logoTemperature(qApp->applicationDirPath() +
"/images/logo_temperature.png");
342 p.drawImage(cadreLogoTemperature, logoTemperature);
345 QRect cadreLogoHumidite( bandeauBasCentreGauche.x(), bandeauBasCentreGauche.y(), bandeauBasCentreGauche.width()*0.1, bandeauBasCentreGauche.height() );
346 cadreLogoHumidite.adjust(marge, marge, -marge, -marge);
347 QImage logoHumditie(qApp->applicationDirPath() +
"/images/logo_humidite.png");
348 p.drawImage(cadreLogoHumidite, logoHumditie);
351 QRect cadreLogoRadiation( bandeauBasCentreDroite.x(), bandeauBasCentreDroite.y(), bandeauBasCentreDroite.width()*0.1, bandeauBasCentreDroite.height() );
352 cadreLogoRadiation.adjust(marge, marge, -marge, -marge);
353 QImage logoRadiation(qApp->applicationDirPath() +
"/images/logo_radiation.png");
354 p.drawImage(cadreLogoRadiation, logoRadiation);
359 pen.setBrush(Qt::green);
362 p.drawImage(bandeauRadar, QImage(qApp->applicationDirPath() +
"/images/RADAR.png"));
373 p.drawPoint((*it).x(),(*it).y());
379 QRect cadreLogoObstacle( bandeauBasDroite.x(), bandeauBasDroite.y(), bandeauBasDroite.width()*0.1, bandeauBasDroite.height() );
380 cadreLogoObstacle.adjust(marge, marge, -marge, -marge);
381 QImage logoObstacle(qApp->applicationDirPath() +
"/images/logo_telemetrie.png");
382 p.drawImage(cadreLogoObstacle, logoObstacle);
475 #ifndef PAS_DE_MANETTE 483 photo.
dateheure = QDateTime::currentDateTime();
488 qDebug() << Q_FUNC_INFO <<
"Photo capturée";
531 fluxVideo->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/signal-interrompu.jpg"));
557 this->setVisible(
false);
565 logoEtatPortSerie->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/actif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
571 logoEtatPortSerie->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
580 logoEtatCamera->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/actif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
585 logoEtatCamera->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
594 logoEtatManette->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/actif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
599 logoEtatManette->setPixmap(QPixmap(qApp->applicationDirPath() +
"/images/inactif.png").scaled(qApp->desktop()->screen()->width()*0.01, qApp->desktop()->screen()->width()*0.01));
Fichier qui contient la déclaration de la classe IHMConfiguration.
void actualisePortsDisponibles()
Actualise la liste des ports disponible.
Fichier qui contient la déclaration de la classe Campagne.
QString getCheminSauvegarde() const
Retourne le chemin du dossier de sauvegarde des photos.
IHMAccueil * ihmAccueil
Relation entre l'ihmAccueil et l'ihmRov.
Rov * rov
Instance d'un objet rov possédant le controle sur les autres classes.
void ajouterPhoto(Photo &photo)
Ajoute une photo dans l'album photo.
void gererCampagne()
Arrête la campagne en cours.
Classe permettant de regler l'affichage du flux video.
void modifierEtatBoutons()
Modifie l'etat des boutons lors du démarrage du flux vidéo.
Capteurs * getCapteurs()
Retourne l'objet capteurs créée par le rov.
void initialiserLayouts()
Initialise les layouts de l'IHM.
#define SEUIL_TEMPERATURE_POSITIVE_ACCEPTABLE
void configurerWidgets()
Configure l'état des widgets à la création de l'IHM.
int incrementeNombrePhoto()
Incrémente le nombre de photo prises durant la campagne et retourne son nombre.
QString getRadiation() const
Récupère la dernière information issue du capteur de radiation.
QLabel * etatPortSerie
Emplacement permettant de visualiser l'état du port série.
QLabel * basDePage
Emplacement permettant de créer un espace en bas de la page.
Fichier qui contient la déclaration de la classe IHMAlbumPhoto.
void setCampagne(Campagne *campagne)
Associe une campagne a la campagne en cours du rov.
QLabel * logoEtatManette
Emplacement permettant de visualiser l'état de la manette à l'aide d'un logo.
IHMReglageVideo * reglageVideo
Instance d'un objet reglageVidéo permettant de modifier les reglages du flux vidéo.
QLabel * hautDePage
Emplacement permettant de créer un espace en haut de la page.
QPushButton * testCapturePhoto
Bouton de simulation de prise de photo.
#define ANGLE_MAX_RADAR
Défini l'angle max supporté pas le radar.
void initialiserWidgets()
Initialise les widgets de l'IHM.
QPixmap image
Image de la photo.
void afficherImage(QPixmap image)
Affiche la nouvelle image du flux vidéo dans l'ihm.
Campagne * getCampagne()
Retourne l'objet campagne en cours.
QLabel * manette
Emplacement permettant de définir le type de matériel.
QPixmap derniereImageVideo
Dernière image reçue du flux vidéo.
Class permettant de visualiser les photos en cours de campagne.
void modifierCampagneBDD(Campagne *campagne)
Met à jour les informations de la campagne lors de l'arret de celle-ci dans la BDD.
Classe controlant tout les traitements en provenance et en direction de la communication avec le rov...
QLabel * etatManette
Emplacement permettant de visualiser l'état de la manette.
QwtThermo * indicateurRadiation
Indicateur permettant de visualiser l'etat de la radiation actuel avec indication de dépassement de s...
QPushButton * boutonConfiguration
Bouton permettant d'accéder à la configuration de la communication.
#define NOM_FENETRE_ROV
Défini le nom du projet.
QDateTime getDate() const
Retourne la date de la campagne.
Class contenant les informations de la campagne en cours.
#define ANGLE_MIN_RADAR
Défini l'angle min supporté pas le radar.
void setEtatRadar(bool etatRadar)
Dertermine l'etat de etatRadar.
QLabel * logoEtatCamera
Emplacement permettant de visualiser l'état de la caméra à l'aide d'un logo.
Campagne * campagneEnCours
Instance d'un objet Campagne possédant les informations de la campagne en cours.
QLabel * camera
Emplacement permettant de définir le type de matériel.
void actualiserInformations(QPixmap &image)
Actualise les informations incrusté dans l'image (heure, données capteur, durée missions) ...
void actualiserInformationsSeuils()
Actualise les informations affichés des indicateur de dépassement des seuils acceptable.
QString getTempsCampagne()
Retourne la durée de la campagne.
bool getEtatRadar()
Donne l'etat de etatRadar.
Fichier qui contient la déclaration de la classe IHMReglageVideo.
void reglerVideo()
Ouvre une nouvelle fenetre permettant de régler l'affichage vidéo.
QString cheminSauvegarde
Chemin de sauvegarde de la photo.
~IHMRov()
Destructeur de la classe IHMRov.
QGroupBox * zoneEtatMateriel
Zone regroupant les informations sur l'état du matériel.
IHMRov(IHMAccueil *ihmAccueil, QWidget *parent=nullptr)
Constructeur de la classe IHMRov.
IHMConfiguration * configuration
Instance d'un objet IHMConfiguration permettant de modifier les reglages de la communication.
void arreterVideo()
Déconnecte les événements liés à la caméra et modifie l'état des boutons de l'IHM.
bool aGarder
Booléen afin de savoir si la photo sera archivé ou non.
QLabel * fluxVideo
Emplacement permettant d'accueiller le flux vidéo.
#define SEUIL_RADIATION_ACCEPTABLE
Défini le seuil à partir duquel la radiation n'est plus acceptable en microsievert.
bool getCampagneEncours() const
Retourne l'etat de la campagne.
bool etatRadar
Dertermine si on affiche un radar.
Class permettant de créer une nouvelle campagne, reprendre une campagne mise en pause, archiver une campagne, supprimer une campagne, accéder à la base de données et configurer le matériel.
double calculCoordonneesX(QPixmap &image)
Calcule les coordonnées x de l'obstacle pour le radar.
QPushButton * photosEnCours
Bouton permettant d'accéder aux photo prise en cours de campagne.
void modifieEtatPortSerie(bool etat, QString information)
Modifie l'affichage de l'état du port série.
QLabel * etatCamera
Emplacement permettant de visualiser l'état de la caméra.
void initialiserEvenementsCamera()
Initialise les événements liés à la caméra.
void arreterCampagne()
Arrête la campagne.
QGroupBox * zoneInformationSeuils
Zone regroupant les informations sur l'état des seuils de dépassement.
#define SEUIL_TEMPERATURE_NEGATIVE_ACCEPTABLE
void closeEvent(QCloseEvent *event)
Gêre l'état de la campagne lors de la fermeture forcé de la fenêtre ihmRov.
void capturerImage(bool etat=false)
Enregistre la dernière image du flux vidéo.
QVector< QPoint > pointsRadar
Conteneur des points du radar.
QString getAngle() const
Récupère la dernière information issue du capteur de distance.
QwtThermo * indicateurTemperature
Indicateur permettant de visualiser l'etat de la temperature actuel avec indication de dépassement de...
Fichier qui contient la déclaration de la classe IHMAccueil.
void modifieEtatManette(bool etat)
Modifie l'affichage de l'état de la manette.
Class permettant de configurer la communication avec le rov.
QString getNomCampagne() const
Retourne le nom de la campagne.
double calculCoordonneesY(QPixmap &image)
Calcule les coordonnées y de l'obstacle pour le radar.
void reglerConfiguration()
Ouvre une nouvelle fenetre permettant de régler la communication.
QLabel * logoEtatPortSerie
Emplacement permettant de visualiser l'état du port série à l'aide d'un logo.
Fichier qui contient la déclaration de la classe rov.
bool demarrerCampagne()
Démarre la campagne.
QVector< Photo > getAlbumPhoto() const
Retourne l'album photo de la campagne.
void ajouterPhotoBDD(Photo &photo, Campagne *campagne)
Ajoute la photo prise dans la BDD associé a la campagne.
#define DISTANCE_MAX_RADAR
Défini la distance max supporté pas le radar.
QLabel * portSerie
Emplacement permettant de définir le type de matériel.
QLabel * temperature
Emplacement permettant de définir le type de seuil.
void modifieEtatCamera(bool etat, QString information)
Modifie l'affichage de l'état de la caméra.
Fichier qui contient la déclaration de la classe IHMRov.
structure contenant les informations d'une photo de campagne
void chargerPhotos()
Charge les photos disponible dans le conteneur albumPhoto de la classe campagne pour les afficher dan...
#define RATIO
Défini le ratio pour la taille de l'affichage du flux vidéo.
QString getHumidite() const
Récupère la dernière information issue du capteur de humidité
void ouvrirAlbumPhotos(QVector< Photo > albumPhoto)
Ouvre une nouvelle fenetre contenant la liste des photos prises en cours de mission.
QLabel * radiation
Emplacement permettant de définir le type de seuil.
QVector< Manette * > getManettes()
Retourne le conteneur de manettes créée par le rov.
void initialiserEvenementsCamera()
Initialise les événements liés à la caméra.
QString getTelemetrie() const
Récupère la dernière information issue du capteur télémétrique.
void modifieEtatBoutons()
Modifie l'état des boutons en fonction du port.
void fermer()
Arrête la campagne et ferme l'ihmRov.
QString getTemperature() const
Récupère la dernière information issue du capteur de température.
void initialiserEvenements()
Initialise les événements de l'IHM.
QDateTime dateheure
Date/Heure de la photo.
QPushButton * boutonReglageVideo
Bouton permettant d'accéder aux reglage de la vidéo.
QPushButton * boutonCampagne
Bouton permettant de mettre en pause la campagne en cours.