Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYEtageWidget.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
14  */
15 
21 #include <qmenu.h>
22 #include <qradiobutton.h>
23 #include <qbuttongroup.h>
24 #include <qtabwidget.h>
25 #include <qtablewidget.h>
26 // Added by qt3to4:
27 #include <QHBoxLayout>
28 #include <QBoxLayout>
29 #include <QGridLayout>
30 #include <QVBoxLayout>
31 #include <QTreeWidgetItem>
32 #include <QHeaderView>
33 #include <QtWidgets>
34 
39 #include "TYEtageWidget.h"
40 
41 // using namespace Qt;
42 
43 #define TR(id) OLocalizator::getString("TYEtageWidget", (id))
44 
45 TYEtageWidget::TYEtageWidget(TYEtage* pElement, QWidget* _pParent /*=NULL*/) : TYWidget(pElement, _pParent)
46 {
47 
48  _elmW = new TYAcousticVolumeWidget(pElement, this);
49 
50  resize(300, 810);
51  setWindowTitle(TR("id_caption"));
52  _etageLayout = new QGridLayout(this);
53  setLayout(_etageLayout);
54  _etageLayout->addWidget(_elmW, 0, 0);
55 
56  // Boutons d'appel de : boite de dialogue des murs et atmosphere
57  _tabWidget = new QTabWidget(this);
58 
59  // On definit d'abord l'onglet des murs, sol et plafond
60 
61  // CREATION D'UN WIDGET POUR LA PRESENTATION DES MURS
62 
63  // Presentation des murs
64  _groupBoxListMur = new QGroupBox(_tabWidget);
65  _groupBoxListMur->setTitle(TR("id_tabmurrepere_box"));
66  _groupBoxListMurLayout = new QGridLayout(_groupBoxListMur);
68 
69  _tableFaces = new QTableWidget(_groupBoxListMur);
70  _tableFaces->setColumnCount(2);
71  _tableFaces->setHorizontalHeaderItem(0, new QTableWidgetItem(TR("id_nom")));
72  _tableFaces->setHorizontalHeaderItem(1, new QTableWidgetItem(TR("id_emission")));
73 
74  _groupBoxListMurLayout->addWidget(_tableFaces, 0, 0);
75 
76  // LE SOL
77  _groupBoxSol = new QGroupBox(_groupBoxListMur);
78  _groupBoxSol->setTitle(TR("id_sol"));
79  _groupBoxSolLayout = new QGridLayout(_groupBoxSol);
80  _groupBoxSol->setLayout(_groupBoxSolLayout);
81 
82  _checkBoxSol = new QCheckBox(_groupBoxSol);
83  _groupBoxSolLayout->addWidget(_checkBoxSol, 0, 0);
84 
85  _lineEditNomSol = new QLineEdit(_groupBoxSol);
86  _lineEditNomSol->setEnabled(false);
87  _groupBoxSolLayout->addWidget(_lineEditNomSol, 0, 1);
88 
89  _pushButtonSol = new QPushButton(_groupBoxSol);
90  _pushButtonSol->setText(TR("id_proprietes_button"));
91  _groupBoxSolLayout->addWidget(_pushButtonSol, 0, 2);
92 
93  _groupBoxListMurLayout->addWidget(_groupBoxSol, 1, 0);
94 
95  // LE PLAFOND
96  _groupBoxPlafond = new QGroupBox(_groupBoxListMur);
97  _groupBoxPlafond->setTitle(TR("id_plafond"));
98  _groupBoxPlafondLayout = new QGridLayout(_groupBoxPlafond);
100 
101  _checkBoxPlafond = new QCheckBox(_groupBoxPlafond);
102  _groupBoxPlafondLayout->addWidget(_checkBoxPlafond, 0, 0);
103 
104  _lineEditNomPlafond = new QLineEdit(_groupBoxPlafond);
105  _lineEditNomPlafond->setEnabled(false);
107 
108  _pushButtonPlafond = new QPushButton(_groupBoxPlafond);
109  _pushButtonPlafond->setText(TR("id_proprietes_button"));
110  _groupBoxPlafondLayout->addWidget(_pushButtonPlafond, 0, 2);
111 
112  _groupBoxListMurLayout->addWidget(_groupBoxPlafond, 2, 0);
113 
114  _tabWidget->insertTab(0, _groupBoxListMur, TR("id_opt_murs"));
115 
116  // FIN DE CREATION DE LA BOITE DE DIALOGUE DES VOLUMES ACOUSTIQUES
117 
118  // CREATION DE L'ONGLET DES SOURCES/MACHINES
119  // Gestion des etats des machines et des sources
120  _groupBoxListMachine = new QGroupBox(_tabWidget);
121  _groupBoxListMachine->setTitle(TR("id_tabmachinerepere_box"));
122  _groupBoxListMachineLayout = new QGridLayout();
124 
125  _tabWidgetSources = new QTabWidget(_groupBoxListMachine);
126 
127  // Table des machines
128  _tableMachine = new QTableWidget(_tabWidgetSources);
129  _tableMachine->setColumnCount(3);
130  _tableMachine->setHorizontalHeaderItem(0, new QTableWidgetItem(TR("id_nom")));
131  _tableMachine->setHorizontalHeaderItem(1, new QTableWidgetItem(TR("id_emission")));
132  _tableMachine->setHorizontalHeaderItem(2, new QTableWidgetItem(TR("id_regime")));
133  _tabWidgetSources->insertTab(0, _tableMachine, TR("id_etat_machine"));
134 
135  // Table des sources
136  _tableSource = new QTableWidget(_tabWidgetSources);
137  _tableSource->setColumnCount(3);
138  _tableSource->setHorizontalHeaderItem(0, new QTableWidgetItem(TR("id_nom")));
139  _tableSource->setHorizontalHeaderItem(1, new QTableWidgetItem(TR("id_emission")));
140  _tableSource->setHorizontalHeaderItem(2, new QTableWidgetItem(TR("id_regime")));
141  _tabWidgetSources->insertTab(1, _tableSource, TR("id_etat_source"));
142 
144 
145  _tabWidget->insertTab(1, _groupBoxListMachine, TR("id_opt_sources"));
146 
147  // CREATION D'UN ONGLET POUR LA GEOMETRIE
148  _groupBoxDimensions = new QGroupBox(_tabWidget);
149  _groupBoxDimensionsLayout = new QGridLayout();
151 
152  _dimensionsHauteurLabel = new QLabel("labelName");
153  _dimensionsHauteurLabel->setText(TR("id_hauteur_label"));
155 
158 
159  // Ajout dans la boite de dialogue globale
160  _tabWidget->insertTab(2, _groupBoxDimensions, TR("id_title_dimensions"));
161 
162  // CREATION D'UN ONGLET DES PROPRIETES ACOUSTIQUE
163  // Choix du mode de calcul du champ reverbere
164  QGroupBox* pGroupBox2 = new QGroupBox(_tabWidget);
165  QGridLayout* pGroupBox2Layout = new QGridLayout(pGroupBox2);
166  pGroupBox2->setLayout(pGroupBox2Layout);
167 
168  // A droite acces au TR et au champ reverbere
169  QPushButton* pPushButtonTR = new QPushButton(pGroupBox2);
170  pPushButtonTR->setText(TR("id_tr_button"));
171  pGroupBox2Layout->addWidget(pPushButtonTR, 0, 0);
172 
173  QPushButton* pPushButtonReverb = new QPushButton(pGroupBox2);
174  pPushButtonReverb->setText(TR("id_reverb_button"));
175  pGroupBox2Layout->addWidget(pPushButtonReverb, 0, 1);
176 
177  // Ajout dans la boite de dialogue globale
178  _tabWidget->insertTab(3, pGroupBox2, TR("id_prop_acous"));
179 
180  _etageLayout->addWidget(_tabWidget);
181 
182  updateContent();
183 
184  connect(_pushButtonSol, &QPushButton::clicked, this, &TYEtageWidget::editSol);
185  connect(_pushButtonPlafond, &QPushButton::clicked, this, &TYEtageWidget::editPlafond);
186  connect(pPushButtonReverb, &QPushButton::clicked, this, &TYEtageWidget::showReverb);
187  connect(pPushButtonTR, &QPushButton::clicked, this, &TYEtageWidget::showTR);
188 
189  // TYAcousticVolumeWidget::regimeChanged does not exist
190  // connect(_elmW, &TYAcousticVolumeWidget::regimeChanged, this, &TYEtageWidget::propagateRegime);
191 }
192 
194 
196 {
197  _elmW->updateContent();
198 
199  // Mise a jour de l'etat des murs
200  updateFromMurs();
201 
202  // Gestion des regimes des machines et des sources
203  int currentRegime = getElement()->getCurRegime();
204  propagateRegime(currentRegime);
205 
206  // Affichage de la hauteur de l'etage
207  _dimensionsHauteurLineEdit->setText(QString().setNum(getElement()->getHauteur(), 'f', 2));
208 }
209 
211 {
212  _elmW->apply();
213 
214  // Mise a jour des murs
215  applyToMurs();
216 
217  // Mis a jour des machines
218  int row = 0;
219 
220  int currentRegime = getElement()->getCurRegime();
221  TYMapPtrElementInt& currentMap = getElement()->getMapRegimes(currentRegime);
222  TYMapPtrElementInt::iterator iterRegime;
223 
224  TYMapPtrElementBool& currentEtat = getElement()->getMapEtats(currentRegime);
225  iterRegime = currentMap.begin();
226 
227  for (row = 0; row < _tableMachine->rowCount(); row++)
228  {
229  if (iterRegime == currentMap.end())
230  {
231  break; // Faut pas depasser les bornes des limites !
232  }
233 
234  // On recherche la premiere machine suivante a partir de la position courante
235  while ((iterRegime != currentMap.end()) && (!((*iterRegime).first->isA("TYMachine"))))
236  {
237  iterRegime++;
238  }
239 
240  // On lui applique le bon regime
241  QTableWidgetItem* pCheck = (QTableWidgetItem*)_tableMachine->item(row, 1);
242  QComboBox* pComboItem = (QComboBox*)_tableMachine->cellWidget(row, 2);
243 
244  // On convertit l'element en machine
245  TYMachine* pMachine = TYMachine::safeDownCast((*iterRegime).first);
246 
247  if (pMachine)
248  {
249  pMachine->setCurRegime(pComboItem->currentIndex());
250  if (pCheck->checkState() == Qt::Checked)
251  {
252  pMachine->setIsRayonnant(true);
253  }
254  else
255  {
256  pMachine->setIsRayonnant(false);
257  }
258  }
259 
260  // Enregistrement du regime dans le map
261  (*iterRegime).second = pComboItem->currentIndex();
262 
263  // Enregistrement de l'etat dans le map
264  if (pCheck->checkState() == Qt::Checked)
265  {
266  currentEtat[pMachine] = true;
267  }
268  else
269  {
270  currentEtat[pMachine] = false;
271  }
272 
273  // On avance a l'element suivant
274  iterRegime++;
275  }
276 
277  // Mis a jour des sources ponctuelles
278  iterRegime = currentMap.begin();
279  for (row = 0; row < _tableSource->rowCount(); row++)
280  {
281  if (iterRegime == currentMap.end())
282  {
283  break; // Faut pas depasser les bornes des limites !
284  }
285 
286  // On recherche la premiere source suivante a partir de la position courante
287  while ((iterRegime != currentMap.end()) && (!((*iterRegime).first->isA("TYUserSourcePonctuelle"))))
288  {
289  iterRegime++;
290  }
291 
292  // On lui applique le bon regime
293  QTableWidgetItem* pCheck = (QTableWidgetItem*)_tableSource->item(row, 1);
294  QComboBox* pComboItem = (QComboBox*)_tableSource->cellWidget(row, 2);
295 
296  // On convertit l'element en source ponctuelle
297  TYUserSourcePonctuelle* pSource = TYUserSourcePonctuelle::safeDownCast((*iterRegime).first);
298 
299  if (pSource)
300  {
301  pSource->setCurrentRegime(pComboItem->currentIndex());
302  if (pCheck->checkState() == Qt::Checked)
303  {
304  pSource->setIsRayonnant(true);
305  }
306  else
307  {
308  pSource->setIsRayonnant(false);
309  }
310  }
311 
312  // Enregistrement du regime dans le map
313  (*iterRegime).second = pComboItem->currentIndex();
314 
315  // Enregistrement de l'etat dans le map
316  if (pCheck->checkState() == Qt::Checked)
317  {
318  currentEtat[pSource] = true;
319  }
320  else
321  {
322  currentEtat[pSource] = false;
323  }
324 
325  // On avance a l'element suivant
326  iterRegime++;
327  }
328 
329  double hauteur = _dimensionsHauteurLineEdit->text().toDouble();
330  getElement()->setHauteur(hauteur);
331 
332  emit modified();
333 }
334 
336 {
337  getElement()->getSol()->setIsRayonnant(_checkBoxSol->isChecked());
338  int ret = getElement()->getSol()->edit(this);
339 
340  if (ret == QDialog::Accepted)
341  {
342  _lineEditNomSol->setText(getElement()->getSol()->getName());
343  }
344  _checkBoxSol->setChecked(getElement()->getSol()->getIsRayonnant());
345 }
346 
348 {
349  getElement()->getPlafond()->setIsRayonnant(_checkBoxPlafond->isChecked());
350  int ret = getElement()->getPlafond()->edit(this);
351 
352  if (ret == QDialog::Accepted)
353  {
354  _lineEditNomPlafond->setText(getElement()->getPlafond()->getName());
355  }
356  _checkBoxPlafond->setChecked(getElement()->getPlafond()->getIsRayonnant());
357 }
358 
359 void TYEtageWidget::editMur(const int& item)
360 {
361  LPTYMur pMur = TYMur::safeDownCast(getElement()->getTabMur()[item]->getElement());
362  QTableWidgetItem* pCheck = (QTableWidgetItem*)_tableFaces->item(item, 1);
363  if (pCheck->checkState() == Qt::Checked)
364  {
365  pMur->setIsRayonnant(true);
366  }
367  else
368  {
369  pMur->setIsRayonnant(false);
370  }
371 
372  QTableWidgetItem* pText = (QTableWidgetItem*)_tableFaces->item(item, 0);
373  pMur->setName(pText->text());
374 
375  int ret = getElement()->getTabMur()[item]->getElement()->edit(this);
376 
377  if (ret == QDialog::Accepted)
378  {
379  if (pMur->getIsRayonnant())
380  {
381  pCheck->setCheckState(Qt::Checked);
382  }
383  else
384  {
385  pCheck->setCheckState(Qt::Unchecked);
386  }
387  _tableFaces->item(item, 0)->setText(pMur->getName());
388  }
389 }
390 
391 void TYEtageWidget::editMachine(const int& item)
392 {
393  // getElement()->getTabMachine()[item->text(0).toInt()]->getElement()->edit(this);
394  TYMachine* pMachine = TYMachine ::safeDownCast(getElement()->getTabMachine()[item]->getElement());
395  QTableWidgetItem* pCheck = (QTableWidgetItem*)_tableMachine->item(item, 1);
396 
397  // On commence par mettre a jour la machine par rapport a l'etat du tableau
398  if (pCheck->checkState() == Qt::Checked)
399  {
400  pMachine->setIsRayonnant(true);
401  }
402  else
403  {
404  pMachine->setIsRayonnant(false);
405  }
406 
407  int ret = getElement()->getTabMachine()[item]->getElement()->edit(this);
408 
409  if (ret == QDialog::Accepted)
410  {
411  propagateRegime(getElement()->getCurRegime());
412  }
413 }
414 
415 void TYEtageWidget::editSource(const int& item)
416 {
417  // getElement()->getTabSources()[item->text(0).toInt()]->getElement()->edit(this);
418  TYUserSourcePonctuelle* pSource =
419  TYUserSourcePonctuelle::safeDownCast(getElement()->getTabSources()[item]->getElement());
420  QTableWidgetItem* pCheck = (QTableWidgetItem*)_tableSource->item(item, 1);
421 
422  // On commence par mettre a jour la machine par rapport a l'etat du tableau
423  if (pCheck->checkState() == Qt::Checked)
424  {
425  pSource->setIsRayonnant(true);
426  }
427  else
428  {
429  pSource->setIsRayonnant(false);
430  }
431 
432  int ret = getElement()->getTabSources()[item]->getElement()->edit(this);
433 
434  if (ret == QDialog::Accepted)
435  {
436  propagateRegime(getElement()->getCurRegime());
437  }
438 }
439 
440 void TYEtageWidget::contextMenuEvent(QContextMenuEvent* e)
441 {
442  if (_tabWidget->currentIndex() == 0)
443  {
444  QPoint point = _tableFaces->mapFrom(this, e->pos());
445 
446  if ((point.x() >= 0) && (point.y() >= 0) && (point.x() <= _tableFaces->width()) &&
447  (point.y() <= _tableFaces->height()))
448  {
449  QPoint resPoint = QPoint(point.x(), point.y() - _tableFaces->horizontalHeader()->height());
450  QTableWidgetItem* item = _tableFaces->itemAt(resPoint);
451  if (item)
452  {
453  QMenu* pMenu = new QMenu(this);
454  QAction* prop = pMenu->addAction(TR("id_property"));
455 
456  QAction* ret = pMenu->exec(_tableFaces->mapToGlobal(point));
457  if ((ret) && (ret == prop))
458  {
459  editMur(_tableFaces->indexAt(resPoint).row());
460  }
461  }
462  }
463  }
464  else if (_tabWidget->currentIndex() == 1)
465  {
466  if (_tabWidgetSources->currentIndex() == 0) // C'est les machines
467  {
468  QPoint point = _tableMachine->mapFrom(this, e->pos());
469 
470  if ((point.x() >= 0) && (point.y() >= 0) && (point.x() <= _tableMachine->width()) &&
471  (point.y() <= _tableMachine->height()))
472  {
473  QPoint resPoint = QPoint(point.x(), point.y() - _tableMachine->horizontalHeader()->height());
474  QTableWidgetItem* item = _tableMachine->itemAt(resPoint);
475  if (item)
476  {
477  QMenu* pMenu = new QMenu(this);
478  QAction* prop = pMenu->addAction(TR("id_property"));
479 
480  QAction* ret = pMenu->exec(_tableMachine->mapToGlobal(point));
481  if ((ret) && (ret == prop))
482  {
483  editMachine(_tableMachine->indexAt(resPoint).row());
484  }
485  }
486  }
487  }
488  else // C'est les sources
489  {
490  QPoint point = _tableSource->mapFrom(this, e->pos());
491 
492  if ((point.x() >= 0) && (point.y() >= 0) && (point.x() <= _tableSource->width()) &&
493  (point.y() <= _tableSource->height()))
494  {
495  QPoint resPoint = QPoint(point.x(), point.y() - _tableSource->horizontalHeader()->height());
496  QTableWidgetItem* item = _tableSource->itemAt(resPoint);
497  if (item)
498  {
499  QMenu* pMenu = new QMenu(this);
500  QAction* prop = pMenu->addAction(TR("id_property"));
501 
502  QAction* ret = pMenu->exec(_tableSource->mapToGlobal(point));
503  if ((ret) && (ret == prop))
504  {
505  editSource(_tableSource->indexAt(resPoint).row());
506  }
507  }
508  }
509  }
510  }
511  else
512  {
513  return;
514  }
515 }
516 
518 {
519  clearTables();
520 
521  // On met a jour l'etat du widget des murs
522  updateFromMurs();
523 
524  // Gestion des regimes des machines et des sources
525 
526  TYMapPtrElementInt& currentMap = getElement()->getMapRegimes(regime);
527  TYMapPtrElementInt::iterator iterRegime;
528 
529  TYMapPtrElementBool& currentEtat = getElement()->getMapEtats(regime);
530 
531  // Update des Machines
532  int row = 0;
533  for (iterRegime = currentMap.begin(); iterRegime != currentMap.end(); iterRegime++)
534  {
535  TYElement* pEmetteur = (*iterRegime).first;
536  if (strcmp(pEmetteur->getClassName(), "TYMachine") == 0)
537  {
538  _tableMachine->setRowCount(_tableMachine->rowCount() + 1);
539  _tableMachine->setItem(row, 0, new QTableWidgetItem((*iterRegime).first->getName()));
540 
541  QTableWidgetItem* pCheckItemEmit = new QTableWidgetItem("");
542  if (currentEtat[pEmetteur])
543  {
544  pCheckItemEmit->setCheckState(Qt::Checked);
545  }
546  else
547  {
548  pCheckItemEmit->setCheckState(Qt::Unchecked);
549  }
550 
551  _tableMachine->setItem(row, 1, pCheckItemEmit);
552 
553  // Ajout des comboBox
554  QStringList listRegimes; // Liste des regimes pour "peupler" le combo
556  QString nom;
557  bool status = true;
558  for (short i = 0; i < pVolNode->getNbRegimes(); i++)
559  {
560  nom = pVolNode->getRegimeNb(i, status).getName();
561  listRegimes.append(nom);
562  }
563 
564  QComboBox* pComboItemRegime = new QComboBox(_tableMachine);
565  pComboItemRegime->addItems(listRegimes);
566  _tableMachine->setCellWidget(row, 2, pComboItemRegime);
567  pComboItemRegime->setCurrentIndex((*iterRegime).second); // Selection du regime
568 
569  row++;
570  }
571  }
572 
573  // Update des Sources ponctuelles
574  row = 0;
575  for (iterRegime = currentMap.begin(); iterRegime != currentMap.end(); iterRegime++)
576  {
577  TYElement* pEmetteur = (*iterRegime).first;
578  if (strcmp(pEmetteur->getClassName(), "TYUserSourcePonctuelle") == 0)
579  {
580  _tableSource->setRowCount(_tableSource->rowCount() + 1);
581  _tableSource->setItem(row, 0, new QTableWidgetItem((*iterRegime).first->getName()));
582 
583  QTableWidgetItem* pCheckItemSrc = new QTableWidgetItem("");
584  if (currentEtat[pEmetteur])
585  {
586  pCheckItemSrc->setCheckState(Qt::Checked);
587  }
588  else
589  {
590  pCheckItemSrc->setCheckState(Qt::Unchecked);
591  }
592 
593  _tableSource->setItem(row, 1, pCheckItemSrc);
594 
595  // Ajout des comboBox
596  QStringList listRegimes; // Liste des regimes pour "peupler" le combo
598  QString nom;
599  for (short i = 0; i < pSource->getNbRegimes(); i++)
600  {
601  nom = pSource->getRegimeNb(i).getName();
602  listRegimes.append(nom);
603  }
604 
605  QComboBox* pComboItemRegime = new QComboBox(_tableSource);
606  pComboItemRegime->addItems(listRegimes);
607  _tableSource->setCellWidget(row, 2, pComboItemRegime);
608  pComboItemRegime->setCurrentIndex((*iterRegime).second); // Selection du regime
609 
610  row++;
611  }
612  }
613 }
614 
616 {
617  for (int i = 0; i < _tableMachine->rowCount(); i++)
618  {
619  _tableMachine->takeItem(i, 0);
620  _tableMachine->takeItem(i, 1);
621  _tableMachine->takeItem(i, 2);
622  }
623  _tableMachine->setRowCount(0);
624  for (int i = 0; i < _tableSource->rowCount(); i++)
625  {
626  _tableSource->takeItem(i, 0);
627  _tableSource->takeItem(i, 1);
628  _tableSource->takeItem(i, 2);
629  }
630  _tableSource->setRowCount(0);
631 }
632 
634 {
635  _lineEditNomSol->setText(getElement()->getSol()->getName());
636  _lineEditNomPlafond->setText(getElement()->getPlafond()->getName());
637  _checkBoxSol->setChecked(getElement()->getSol()->getIsRayonnant());
638  _checkBoxPlafond->setChecked(getElement()->getPlafond()->getIsRayonnant());
639 
640  for (unsigned int i = 0, row = 0; i < getElement()->getTabMur().size(); i++, row++)
641  {
642  LPTYMur pMur = TYMur::safeDownCast(getElement()->getTabMur()[i]->getElement());
643  _tableFaces->setRowCount(i + 1);
644  _tableFaces->setItem(row, 0, new QTableWidgetItem(pMur->getName()));
645  QTableWidgetItem* pCheckItemEmit = new QTableWidgetItem("");
646  if (pMur->getIsRayonnant())
647  {
648  pCheckItemEmit->setCheckState(Qt::Checked);
649  }
650  else
651  {
652  pCheckItemEmit->setCheckState(Qt::Unchecked);
653  }
654  _tableFaces->setItem(row, 1, pCheckItemEmit);
655  }
656 }
657 
659 {
660  getElement()->getSol()->setIsRayonnant(_checkBoxSol->isChecked());
661  getElement()->getPlafond()->setIsRayonnant(_checkBoxPlafond->isChecked());
662 
663  for (int i = 0; i < _tableFaces->rowCount(); i++)
664  {
665  LPTYMur pMur = TYMur::safeDownCast(getElement()->getTabMur()[i]->getElement());
666  QTableWidgetItem* pCheck = _tableFaces->item(i, 1);
667  if (pCheck->checkState() == Qt::Checked)
668  {
669  pMur->setIsRayonnant(true);
670  }
671  else
672  {
673  pMur->setIsRayonnant(false);
674  }
675  QTableWidgetItem* pText = (QTableWidgetItem*)_tableFaces->item(i, 0);
676  pMur->setName(pText->text());
677  }
678 }
679 
681 {
682  static_cast<TYSpectre>(getElement()->getReverb().toDB()).edit(this);
683 }
684 
686 {
688  getElement()->getTR().edit(this);
690 }
outil IHM pour un volume acoustique (fichier header)
std::map< TYElement *, bool > TYMapPtrElementBool
Etat d'utilisation des elements (utilise par les calculs)
Definition: TYDefines.h:376
std::map< TYElement *, int > TYMapPtrElementInt
Tableau associatif des elements et d'un entier (utilise pour gerer les regimes)
Definition: TYDefines.h:379
#define TR(id)
outil IHM pour un etage (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
virtual const char * getClassName() const
Definition: TYElement.h:248
static OPrototype * safeDownCast(OPrototype *pObject)
Definition: TYElement.cpp:71
TYRegime & getRegimeNb(const int &nb, bool &status)
size_t getNbRegimes() const
virtual void setIsRayonnant(bool rayonnant=true, bool recursif=true)
virtual void setCurRegime(int regime)
classe de l'objet IHM pour un volume acoustique
virtual QString getName() const
Definition: TYElement.h:691
QCheckBox * _checkBoxPlafond
void showTR()
Affichage du temps de reverberation.
virtual void updateContent()
void editSource(const int &item)
void editMur(const int &item)
QTableWidget * _tableMachine
QGroupBox * _groupBoxPlafond
virtual void contextMenuEvent(QContextMenuEvent *e)
QLineEdit * _lineEditNomSol
QGroupBox * _groupBoxListMachine
void editMachine(const int &item)
void showReverb()
Affichage du champ reverbere.
QGridLayout * _etageLayout
TYEtageWidget(TYEtage *pElement, QWidget *_pParent=NULL)
QTabWidget * _tabWidget
QTabWidget * _tabWidgetSources
QTableWidget * _tableFaces
TYLineEdit * _dimensionsHauteurLineEdit
QGridLayout * _groupBoxListMachineLayout
QGridLayout * _groupBoxPlafondLayout
virtual void apply()
TYAcousticVolumeWidget * _elmW
QLineEdit * _lineEditNomPlafond
QGroupBox * _groupBoxListMur
QPushButton * _pushButtonSol
QGridLayout * _groupBoxListMurLayout
QGroupBox * _groupBoxDimensions
QLabel * _dimensionsHauteurLabel
virtual ~TYEtageWidget()
QTableWidget * _tableSource
QGroupBox * _groupBoxSol
QCheckBox * _checkBoxSol
void propagateRegime(int regime)
QGridLayout * _groupBoxSolLayout
QPushButton * _pushButtonPlafond
QGridLayout * _groupBoxDimensionsLayout
static void setXMLPrecision(const int precision=2)
Get/Set de la precision de stockage des resultats (XML)
Definition: TYSpectre.h:174
TYUserSrcRegime & getRegimeNb(const int &nb)
void setCurrentRegime(const int &regimeNumber)
void setIsRayonnant(const bool &rayonnant)
classe de l'objet IHM pour un objet metier de type TYElement
Definition: TYWidget.h:43
void modified()
static int edit(TYElement *pElement, QWidget *pParent=NULL)
Definition: TYWidget.cpp:45