ROV'NET  0.2
BTS SNIR LaSalle Avignon 2020
ihmreglagevideo.cpp
Aller à la documentation de ce fichier.
1 
7 #include "ihmreglagevideo.h"
8 
9 IHMReglageVideo::IHMReglageVideo(Rov *rov, QWidget *parent) : QWidget(parent), rov(rov)
10 {
11  qDebug() << Q_FUNC_INFO;
16 }
17 
19 {
20  qDebug() << Q_FUNC_INFO;
21 }
22 
24 {
25  sliderLuminositeVideo = new QSlider(Qt::Horizontal, this);
26  sliderContrasteVideo = new QSlider(Qt::Horizontal, this);
27  sliderSaturationVideo = new QSlider(Qt::Horizontal, this);
28 
29  luminosite = new QLabel("Luminosité", this);
30  contraste = new QLabel("Contraste", this);
31  saturation = new QLabel("Saturation", this);
32 
33  luminositeVideo = new QSpinBox(this);
34  contrasteVideo = new QSpinBox(this);
35  saturationVideo = new QSpinBox(this);
36 
37  camera = new QLabel("Camera(s): ", this);
38  resolution = new QLabel("Résolution: ", this);
39 
40  listeCameras = new QComboBox(this);
41  listeResolutions = new QComboBox(this);
42 
43  boutonVideo = new QPushButton("Arrêter", this);
44 }
45 
47 {
48  sliderLuminositeVideo->setValue(50);
49  sliderContrasteVideo->setValue(50);
50  sliderSaturationVideo->setValue(50);
51 
52  luminositeVideo->setValue(50);
53  contrasteVideo->setValue(50);
54  saturationVideo->setValue(50);
55 
56  listeCameras->setEnabled(false);
57 }
58 
60 {
61  QVBoxLayout *layoutPrincipal = new QVBoxLayout;
62  QHBoxLayout *layoutReglageVideo = new QHBoxLayout;
63  QVBoxLayout *layoutConfigurationLuminosite = new QVBoxLayout;
64  QVBoxLayout *layoutConfigurationContraste = new QVBoxLayout;
65  QVBoxLayout *layoutConfigurationSaturation = new QVBoxLayout;
66  QHBoxLayout *layoutCamera = new QHBoxLayout;
67  QHBoxLayout *layoutBoutonCamera = new QHBoxLayout;
68 
69  layoutReglageVideo->setAlignment(Qt::AlignLeft);
70  layoutConfigurationContraste->setAlignment(Qt::AlignTop);
71  layoutConfigurationLuminosite->setAlignment(Qt::AlignTop);
72  layoutConfigurationSaturation->setAlignment(Qt::AlignTop);
73  layoutBoutonCamera->setAlignment(Qt::AlignLeft);
74 
75  layoutPrincipal->addLayout(layoutReglageVideo);
76  layoutPrincipal->addLayout(layoutCamera);
77  layoutPrincipal->addLayout(layoutBoutonCamera);
78 
79  layoutReglageVideo->addLayout(layoutConfigurationLuminosite);
80  layoutReglageVideo->addLayout(layoutConfigurationContraste);
81  layoutReglageVideo->addLayout(layoutConfigurationSaturation);
82 
83  layoutConfigurationLuminosite->addWidget(luminosite);
84  layoutConfigurationLuminosite->addWidget(sliderLuminositeVideo);
85  layoutConfigurationLuminosite->addWidget(luminositeVideo);
86  layoutConfigurationContraste->addWidget(contraste);
87  layoutConfigurationContraste->addWidget(sliderContrasteVideo);
88  layoutConfigurationContraste->addWidget(contrasteVideo);
89  layoutConfigurationSaturation->addWidget(saturation);
90  layoutConfigurationSaturation->addWidget(sliderSaturationVideo);
91  layoutConfigurationSaturation->addWidget(saturationVideo);
92  layoutCamera->addWidget(camera);
93  layoutCamera->addWidget(listeCameras);
94  layoutCamera->addWidget(resolution);
95  layoutCamera->addWidget(listeResolutions);
96  layoutBoutonCamera->addWidget(boutonVideo);
97 
98  setLayout(layoutPrincipal);
99  setWindowTitle(NOM_FENETRE_REGLAGEVIDEO);
100  setStyleSheet("background:#202020;color:white;");
101 }
102 
104 {
105  connect(sliderLuminositeVideo, SIGNAL(valueChanged(int)), luminositeVideo, SLOT(setValue(int)));
106  connect(sliderContrasteVideo, SIGNAL(valueChanged(int)), contrasteVideo, SLOT(setValue(int)));
107  connect(sliderSaturationVideo, SIGNAL(valueChanged(int)), saturationVideo, SLOT(setValue(int)));
108  connect(luminositeVideo, SIGNAL(valueChanged(int)), sliderLuminositeVideo, SLOT(setValue(int)));
109  connect(contrasteVideo, SIGNAL(valueChanged(int)), sliderContrasteVideo, SLOT(setValue(int)));
110  connect(saturationVideo, SIGNAL(valueChanged(int)), sliderSaturationVideo, SLOT(setValue(int)));
111  connect(boutonVideo, SIGNAL(clicked()), this, SLOT(gererVideo()));
112 }
113 
115 {
116  if(boutonVideo->text() == "Arrêter")
117  {
118  rov->arreterVideo();
119  boutonVideo->setText("Démarrer");
120  }
121  else
122  {
123  activerCamera();
124  boutonVideo->setText("Arrêter");
125  }
126 }
127 
129 {
130  if(rov->getCamera() != nullptr)
131  {
132  if(rov->getCamera()->isRunning())
133  return;
135  connect(luminositeVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setLuminosite(int)));
136  connect(contrasteVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setContraste(int)));
137  connect(saturationVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setSaturation(int)));
138  connect(listeCameras, SIGNAL(currentIndexChanged(int)), this, SLOT(chargerListeResolutionDisponible(int)));
139  connect(listeResolutions, SIGNAL(currentIndexChanged(int)), rov->getCamera(), SLOT(setResolution(int)));
140  }
141 }
142 
144 {
145  int nbCameras = QCameraInfo::availableCameras().count();
146  qDebug() << Q_FUNC_INFO << "Caméra(s) disponible(s)" << QCameraInfo::availableCameras().count();
147  if (nbCameras > 0)
148  {
149  #ifndef SANS_DETECTION
150  QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
151  listeCameras->clear();
152  int choix = -1, i = 0;
153  foreach (const QCameraInfo &cameraInfo, cameras)
154  {
155  listeCameras->addItem(cameraInfo.deviceName());
156  qDebug() << Q_FUNC_INFO << "Device" << cameraInfo.deviceName();
157  qDebug() << Q_FUNC_INFO << "Description" << cameraInfo.description();
158  if(rov->getCamera() != nullptr)
159  {
160  if(cameraInfo.deviceName() == rov->getCamera()->getNom())
161  {
162  choix = i;
163  }
164  }
165  i++;
166  }
167  #else
168  int choix = 0;
169  qDebug() << Q_FUNC_INFO << "Device" << rov->getCamera()->getNom();
170  listeCameras->addItem(rov->getCamera()->getNom());
171  #endif
172 
173  if(choix != -1)
174  {
175  if(rov->getCamera() != nullptr)
177  listeCameras->setCurrentIndex(choix);
178  }
179  }
180 
181 }
182 
184 {
185  if(index < 0)
186  return;
188 }
189 
191 {
192  #ifndef SANS_DETECTION
193  QCameraInfo cameraInfo(nom.toLatin1());
194  QList<QSize> liste = Camera::lireListeResolutionsCamera(cameraInfo);
195  listeResolutions->clear();
196  foreach (const QSize &resolution, liste)
197  {
198  qDebug() << Q_FUNC_INFO << resolution.width() << "x" << resolution.height();
199  listeResolutions->addItem(QString::number(resolution.width()) + QString("x") + QString::number(resolution.height()));
200  }
201  #else
202  listeResolutions->clear();
203  QSize resolutionDefaut = rov->getCamera()->getResolution();
204  qDebug() << Q_FUNC_INFO << resolutionDefaut.width() << "x" << resolutionDefaut.height();
205  listeResolutions->addItem(QString::number(resolutionDefaut.width()) + QString("x") + QString::number(resolutionDefaut.height()));
206  #endif
207  if(rov->getCamera() != nullptr)
208  {
209  qDebug() << Q_FUNC_INFO << "choixResolution" << rov->getCamera()->getChoixResolution();
210  listeResolutions->setCurrentIndex(rov->getCamera()->getChoixResolution());
211  }
212 }
213 
215 {
216  qDebug() << Q_FUNC_INFO << listeCameras->currentText() << listeResolutions->currentText() << listeResolutions->currentIndex();
217  rov->demarrerVideo(listeCameras->currentText(), listeResolutions->currentIndex());
218  listeCameras->setEnabled(false);
219 }
220 
222 {
223  if(rov->getCamera() != nullptr)
224  {
225  disconnect(luminositeVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setLuminosite(int)));
226  disconnect(contrasteVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setContraste(int)));
227  disconnect(saturationVideo, SIGNAL(valueChanged(int)), rov->getCamera(), SLOT(setSaturation(int)));
228  disconnect(listeCameras, SIGNAL(currentIndexChanged(int)), this, SLOT(chargerListeResolutionDisponible(int)));
229  disconnect(listeResolutions, SIGNAL(currentIndexChanged(int)), rov->getCamera(), SLOT(setResolution(int)));
230  }
231  listeCameras->setEnabled(true);
232 }
QString getNom() const
Retourne le nom de la caméra.
Definition: camera.cpp:103
QComboBox * listeResolutions
Liste déroulante déstiné à accueillir la liste des résolutions disponible.
QSpinBox * luminositeVideo
Zone de saisie permettant de modifier la luminosite du flux vidéo.
void configurerWidgets()
Configure l&#39;etat des widgets à la création de l&#39;IHM.
void initialiserEvenements()
Initialise les événements de l&#39;IHM.
int getChoixResolution()
Récupère le choix de la resolution active.
Definition: camera.cpp:129
void modifierEtatBoutons()
Modifie l&#39;etat des boutons lors du démarrage du flux vidéo.
Rov * rov
Objet rov permettant de mofidier les reglage du flux vidéo.
QSlider * sliderSaturationVideo
Slider permettant de modifier la saturation du flux vidéo.
QSpinBox * saturationVideo
Zone de saisie permettant de modifier la saturation du flux vidéo.
QSlider * sliderLuminositeVideo
Slider permettant de modifier la luminosite du flux vidéo.
void chargerListeResolutionDisponible(int index)
Charge les résolutions pour une caméra sélectionnée.
Classe controlant tout les traitements en provenance et en direction de la communication avec le rov...
Definition: rov.h:91
QLabel * luminosite
Texte informant le reglage à modifier.
void initialiserWidgets()
Initialise les widgets de l&#39;IHM.
bool demarrerVideo(QString nomCamera, int choixResolution=-1)
Démarre un nouveau flux vidéo.
Definition: rov.cpp:165
#define NOM_FENETRE_REGLAGEVIDEO
Fichier qui contient la déclaration de la classe IHMReglageVideo.
void activerCamera()
Active la caméra.
void arreterVideo()
Arrete le flux vidéo.
Definition: rov.cpp:273
QLabel * camera
Texte informant de l&#39;élément à selectionner (caméra)
Camera * getCamera()
Retourne l&#39;objet caméra créée par le rov.
Definition: rov.cpp:148
static QList< QSize > lireListeResolutionsCamera(QCameraInfo &cameraInfo)
Retourne la liste des résolutions supportés par la caméra passé en parametre.
Definition: camera.cpp:305
QSize getResolution()
Récupère la resolution active.
Definition: camera.cpp:122
QPushButton * boutonVideo
Bouton permettant de démarrer le flux vidéo de la caméra selectionner.
void chargerListeCameraDisponible()
Charge la liste des caméras disponibles dans la liste déroulante.
IHMReglageVideo(Rov *rov, QWidget *parent=nullptr)
Constructeur de la classe ReglageVideo.
void initialiserLayouts()
Initialise les layout de l&#39;IHM.
void initialiserEvenementsCamera()
Initialise les événements liés à la caméra.
QLabel * resolution
Texte informant de l&#39;élément à selectionner (résolution)
void gererVideo()
Modifie l&#39;etat de la vidéo en fonction de l&#39;état actuel.
QComboBox * listeCameras
Liste déroulante déstiné à accueillir la liste des caméra disponible.
QLabel * saturation
Texte informant le reglage à modifier.
~IHMReglageVideo()
Destructeur de la classe ReglageVideo.
La classe QWidget est la classe de base de tous les objets graphiques d&#39;interface utilisateur...
QSpinBox * contrasteVideo
Zone de saisie permettant de modifier le contraste du flux vidéo.
QSlider * sliderContrasteVideo
Slider permettant de modifier le contraste du flux vidéo.
QLabel * contraste
Texte informant le reglage à modifier.