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