Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYPreferenceManager.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 
16 /*
17  *
18  */
19 
20 #if TY_USE_IHM
21 
22  #include <qwidget.h>
23  #include <qrect.h>
24  #include <qstring.h>
25  #include <qfile.h>
26 
28 
29  #include "TYPreferenceManager.h"
30 
32 static const int nbDefaultParams = 5;
34 static const char* defaultParams[nbDefaultParams][2] = {{"MainWindowMaximized", "true"},
35  {"MainWindowPosX", "0"},
36  {"MainWindowPosY", "0"},
37  {"MainWindowSizeX", "800"},
38  {"MainWindowSizeY", "600"}};
39 
40 OPreferenceManager* TYPreferenceManager::_prefMngr = NULL;
41 QString* TYPreferenceManager::_fileName = NULL;
42 
43 OPreferenceManager& TYPreferenceManager::getInstance()
44 {
45  if (_prefMngr == NULL)
46  {
47  _prefMngr = new OPreferenceManager("Tympan");
48  }
49  return *_prefMngr;
50 }
51 
52 QString& TYPreferenceManager::getFileName()
53 {
54  if (_fileName == NULL)
55  {
56  _fileName = new QString("");
57  }
58  return *_fileName;
59 }
60 
61 void TYPreferenceManager::init(const QString& fileName /*=QString()*/)
62 {
63  if (!fileName.isEmpty() && !fileName.isNull())
64  {
65  setFileName(fileName);
66  }
67  else
68  {
69  getInstance().loadDefault(defaultParams, nbDefaultParams);
70  }
71 }
72 
73 void TYPreferenceManager::reset()
74 {
75  getInstance().reset();
76 }
77 
78 void TYPreferenceManager::setFileName(const QString& fileName)
79 {
80  getFileName() = fileName;
81 }
82 
83 bool TYPreferenceManager::read()
84 {
85  if (QFile::exists(getFileName()))
86  {
87  return getInstance().readXML(getFileName());
88  }
89  else
90  {
91  return false;
92  }
93 }
94 
95 bool TYPreferenceManager::write()
96 {
97  return getInstance().writeXML(getFileName());
98 }
99 
100 bool TYPreferenceManager::exists(const QString& pref)
101 {
102  return getInstance().exists(pref);
103 }
104 
105 void TYPreferenceManager::saveGeometryToPreferences(const QString& pref, const QWidget* pWidget)
106 {
107  Q_ASSERT(pWidget);
108 
109  getInstance().setBool(pref + "Maximized", pWidget->isMaximized());
110 
111  QPoint pos = pWidget->pos();
112  QSize size = pWidget->size();
113 
114  if (pos.x() < 0)
115  {
116  pos.setX(0);
117  }
118  if (pos.y() < 0)
119  {
120  pos.setY(0);
121  }
122  if (size.width() <= 0)
123  {
124  size.setWidth(100);
125  }
126  if (size.height() <= 0)
127  {
128  size.setHeight(100);
129  }
130 
131  getInstance().setFrame(pref, pos.x(), pos.y(), size.width(), size.height());
132 }
133 
134 void TYPreferenceManager::loadGeometryFromPreferences(const QString& pref, QWidget* pWidget)
135 {
136  Q_ASSERT(pWidget);
137 
138  if (getInstance().getBool(pref + "Maximized"))
139  {
140  pWidget->showMaximized();
141  }
142  else
143  {
144  int posX = 0, posY = 0, sizeX = 0, sizeY = 0;
145 
146  getInstance().getFrame(pref, posX, posY, sizeX, sizeY);
147 
148  if (posX < 0)
149  {
150  posX = 0;
151  }
152  if (posY < 0)
153  {
154  posY = 0;
155  }
156  // pWidget->move(posX, posY);
157  if (sizeX <= 0)
158  {
159  sizeX = 100;
160  }
161  if (sizeY <= 0)
162  {
163  sizeY = 100;
164  }
165  pWidget->resize(sizeX, sizeY);
166  }
167 }
168 
169 void TYPreferenceManager::setSpectre(const QString& pref, const TYSpectre* pSpectre)
170 {
171  setSpectre(getInstance().getCurrentDirectory(), pref, pSpectre);
172 }
173 
174 void TYPreferenceManager::setSpectre(const QString& dir, const QString& pref, const TYSpectre* pSpectre)
175 {
176  for (unsigned int i = 0; i < pSpectre->getNbValues(); i++)
177  {
178  setFloat(pref + OPreferenceManager::intToString(i), pSpectre->getTabValReel()[i]);
179  }
180 }
181 
182 TYSpectre* TYPreferenceManager::getSpectre(const QString& pref)
183 {
184  return getSpectre(getInstance().getCurrentDirectory(), pref);
185 }
186 
187 TYSpectre* TYPreferenceManager::getSpectre(const QString& dir, const QString& pref)
188 {
189  int nbFreq = 0;
190 
191  // Recherche de la taille du tableau
192  while (exists(dir, pref + OPreferenceManager::intToString(nbFreq)))
193  {
194  ++nbFreq;
195  }
196 
197  if (nbFreq <= 0)
198  {
199  return NULL;
200  }
201 
202  TYSpectre* pSpectre = new TYSpectre();
203  for (int i = 0; i < nbFreq; i++)
204  {
205  double value = getFloat(dir, pref + OPreferenceManager::intToString(i));
206  pSpectre->getTabValReel()[i] = value;
207  }
208 
209  return pSpectre;
210 }
211 
212 #endif // TY_USE_IHM
Systeme de gestion des preferences.
static QString intToString(const int &val)
unsigned int getNbValues() const
Number of values in the spectrum.
Definition: spectre.cpp:182
double * getTabValReel() override
Definition: spectre.h:356