BioSignalPi  v2
settingswidget.cpp
Go to the documentation of this file.
1 #include "settingswidget.h"
2 #include <QtWidgets>
3 #include <QSettings>
4 #include <QDebug>
5 #include "settingssingleton.h"
6 
7 
8 
10  QWidget( parent )
11 {
12  setupComponents();
13  setupActions();
14  setupLayout();
15 }
16 
20 void SettingsWidget::sourceChanged(int id)
21 {
22  if ((id >= 0) && (id < 5)) {
23  QSettings settings(iniPath, QSettings::IniFormat);
24  settings.setValue("ECGCapture/Source", id);
25  }
26 
27  SettingsSingleton::instance().setSource(idToSource(id));
29 
30 }
31 
35 void SettingsWidget::sampleRateChanged(int id)
36 {
37  if ((id >= 0) && (id < 3)) {
38  QSettings settings(iniPath, QSettings::IniFormat);
39  settings.setValue("ECGCapture/SampleRate", id);
40 
41  SettingsSingleton::instance().setSampleRate(idToSampleRate(id));
42  }
43 }
44 
45 int SettingsWidget::idToSampleRate(int id)
46 {
47  int fs;
48 
49  if ((id >= 0) && (id < 3)) {
50  switch (id) {
51  case 0:
52  fs = 500;
53  break;
54  case 1:
55  fs = 1000;
56  break;
57  case 2:
58  fs = 2000;
59  break;
60  default:
61  fs = -1;
62  break;
63  }
64  }
65 
66  return fs;
67 }
68 
69 QString SettingsWidget::idToSource(int id)
70 {
71  QString source = "";
72 
73  // if ((id >= 0) && (id < 4)) {
74  switch (id) {
75  case 0:
76  source = "ECG";
77  break;
78  case 1:
79  source = "10 Hz sin test tone";
80  break;
81  case 2:
82  source = "150 Hz sin test tone";
83  break;
84  case 3:
85  source = "1 Hz Square wave test tone";
86  break;
87  case 4:
88  source="EcgMock";
89  break;
90  default:
91  break;
92  }
93  // }
94 
95  return source;
96 }
97 
104 void SettingsWidget::applyCaptureSettings()
105 {
106  QString fileName = fileNameTextBox->text();
107  QString name = nameTextBox->text();
108  QString recordingName = recordingNameTextBox->text();
109  QString gender = genderTextBox->text();
110  QString birthDate = birthdateTextBox->text();
111  QString patientCode = patientCodeTextBox->text();
112  QString notes = notesTextBox->toPlainText();
113 
114  if (fileName != "") {
116  }
117 
118  if (name != "") {
120  }
121 
122  if (recordingName != "") {
124  }
125 
126  if (gender != "") {
128  }
129 
130  if (birthDate != "") {
132  }
133 
134  if (patientCode != "") {
136  }
137 
138  if (notes != "") {
140  }
141 
142  if (saveAsEDFCheckbox->isChecked()) {
144  }
145 
146 
147 }
148 
149 
153 void SettingsWidget::setupComponents()
154 {
155  //Get settings from previous captures from the .ini-file
156  iniPath = qApp->applicationDirPath() + "/settings.ini";
157  QSettings settings(iniPath, QSettings::IniFormat);
158 
159  //=====START SOURCE CONTROL=====
160  QVector<QAbstractButton *> sourceButtonArray;
161  sourceControlButtonGroup = new QButtonGroup;
162 
163  ecgSource = new QRadioButton("ECG");
164  sin10Source = new QRadioButton("10 Hz sin test tone");
165  sin150Source = new QRadioButton("150 Hz sin test tone");
166  squareSource = new QRadioButton("1 Hz square wave test tone");
167  ecgMockSource = new QRadioButton("EcgMock");
168 
169  sourceButtonArray.append(ecgSource);
170  sourceButtonArray.append(sin10Source);
171  sourceButtonArray.append(sin150Source);
172  sourceButtonArray.append(squareSource);
173  sourceButtonArray.append(ecgMockSource);
174 
175  for (int ii=0; ii<sourceButtonArray.size(); ii++) {
176  sourceControlButtonGroup->addButton(sourceButtonArray.at(ii), ii);
177  }
178 
179  int sourceId = settings.value("/ECGCapture/Source", 0).toInt();
180  sourceButtonArray.at(sourceId)->setChecked(true);
181  settings.setValue("ECGCapture/Source", sourceId);
182  SettingsSingleton::instance().setSource(idToSource(sourceId));
183  //=====END SOURCE CONTROL=====
184 
185  //=====START SAMPLE RATE CONTROL=====
186  QVector<QAbstractButton *> sampleRateButtonArray;
187  sampleRateControlButtonGroup = new QButtonGroup;
188 
189  lowSampleRate = new QRadioButton("500 Hz");
190  midSampleRate = new QRadioButton("1000 Hz");
191  highSampleRate = new QRadioButton("2000 Hz");
192 
193  sampleRateButtonArray.append(lowSampleRate);
194  sampleRateButtonArray.append(midSampleRate);
195  sampleRateButtonArray.append(highSampleRate);
196 
197  for (int ii=0; ii<sampleRateButtonArray.size(); ii++) {
198  sampleRateControlButtonGroup->addButton(sampleRateButtonArray.at(ii), ii);
199  }
200 
201  int sampleRateId = settings.value("/ECGCapture/SampleRate", 0).toInt();
202  sampleRateButtonArray.at(sampleRateId)->setChecked(true);
203  settings.setValue("ECGCapture/SampleRate", sampleRateId);
204  SettingsSingleton::instance().setSampleRate(idToSampleRate(sampleRateId));
205  //=====END SAMPLE RATE CONTROL=====
206 
207  //Set up objects to be used
208  fileNameTextBox = new QLineEdit;
209  nameTextBox = new QLineEdit;
210  recordingNameTextBox = new QLineEdit;
211  genderTextBox = new QLineEdit;
212  birthdateTextBox = new QLineEdit;
213  patientCodeTextBox = new QLineEdit;
214  notesTextBox = new QTextEdit;
215  applyCaptureSettingsButton = new QPushButton("Apply settings");
216  saveAsEDFCheckbox = new QCheckBox;
217 }
218 
222 void SettingsWidget::setupActions()
223 {
224  //Signals-slots
225  connect(sourceControlButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(sourceChanged(int)));
226  connect(sampleRateControlButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(sampleRateChanged(int)));
227  connect(applyCaptureSettingsButton, SIGNAL(clicked()), this, SLOT(applyCaptureSettings()));
228 }
229 
233 void SettingsWidget::setupLayout()
234 {
235  QGroupBox *sampleRateControlGroup = new QGroupBox("Sample rate");
236  QGroupBox *sourceControlGroup = new QGroupBox("Source");
237  QGroupBox *captureSettingsGroup = new QGroupBox("ECG capture settings");
238 
239  QLabel *sampleFreqNote = new QLabel("NOTE: some frames are dropped at 2000 Hz.");
240  QLabel *fileNameLabel = new QLabel("Filename: ");
241  QLabel *nameLabel = new QLabel("Name: ");
242  QLabel *recordingNameLabel = new QLabel("Recording name: ");
243  QLabel *genderLabel = new QLabel("Gender: ");
244  QLabel *birthdateLabel = new QLabel("Birth date: ");
245  QLabel *patientCodeLabel = new QLabel("Patient code: ");
246  QLabel *notesLabel = new QLabel("Notes: ");
247  QLabel *saveAsEDFLabel = new QLabel("Save as EDF: ");
248 
249  //The ECG capture settings options layout
250  QFormLayout *captureSettingsLayout = new QFormLayout;
251  captureSettingsLayout->addRow(fileNameLabel, fileNameTextBox);
252  captureSettingsLayout->addRow(nameLabel, nameTextBox);
253  captureSettingsLayout->addRow(recordingNameLabel, recordingNameTextBox);
254  captureSettingsLayout->addRow(genderLabel, genderTextBox);
255  captureSettingsLayout->addRow(birthdateLabel, birthdateTextBox);
256  captureSettingsLayout->addRow(patientCodeLabel, patientCodeTextBox);
257  captureSettingsLayout->addRow(notesLabel, notesTextBox);
258  captureSettingsLayout->addRow(saveAsEDFLabel, saveAsEDFCheckbox);
259  captureSettingsLayout->addWidget(applyCaptureSettingsButton);
260 
261  captureSettingsGroup->setLayout(captureSettingsLayout);
262 
263  //Source control layout
264  QVBoxLayout *sourceControlLayout = new QVBoxLayout;
265 
266  sourceControlLayout->addWidget(ecgSource);
267  sourceControlLayout->addWidget(sin10Source);
268  sourceControlLayout->addWidget(sin150Source);
269  sourceControlLayout->addWidget(squareSource);
270  sourceControlLayout->addWidget(ecgMockSource);
271 
272  sourceControlGroup->setLayout(sourceControlLayout);
273 
274  //Sample rate layout
275  QVBoxLayout *sampleRateControlLayout = new QVBoxLayout;
276  sampleRateControlLayout->addWidget(lowSampleRate);
277  sampleRateControlLayout->addWidget(midSampleRate);
278  sampleRateControlLayout->addWidget(highSampleRate);
279  sampleRateControlLayout->addWidget(sampleFreqNote);
280 
281  sampleRateControlGroup->setLayout(sampleRateControlLayout);
282 
283  //Main layout
284  QVBoxLayout *mainLayout = new QVBoxLayout;
285  mainLayout->addWidget(sourceControlGroup);
286  mainLayout->addStretch();
287  mainLayout->addWidget(sampleRateControlGroup);
288  mainLayout->addStretch();
289  mainLayout->addWidget(captureSettingsGroup);
290  mainLayout->addStretch();
291 
292  setLayout(mainLayout);
293 }
void setSourceId(int sourceId)
Used to set private int name.
void setName(QString name)
Used to set private variable name.
void setBirthDate(QString birthDate)
Used to set private variable birthDate.
void setSampleRate(int sampleRate)
Used to set private variable sampleRate.
void setSource(QString source)
Used to set private QString source.
static SettingsSingleton & instance()
Retrives a reference to the ONE and ONLY SettingsSingleton created for the application.
void setRecordingName(QString recordingName)
Used to set private variable recordingName.
void setPatientCode(QString patientCode)
Used to set private variable patientCode.
void setSaveAsEdf(bool saveAsEdf)
Set the private bool saveAsEdf.
void setNotes(QString notes)
Used to set private variable notes.
void setFileName(QString fileName)
Used to set private variable fileName.
SettingsWidget(QWidget *=NULL)
void setGender(QString gender)
Used to set private variable gender.