MNE-CPP  0.1.9
A Framework for Electrophysiology
filtersettingsview.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "filtersettingsview.h"
40 
41 #include "filterdesignview.h"
42 
43 #include "ui_filtersettingsview.h"
44 
45 //=============================================================================================================
46 // QT INCLUDES
47 //=============================================================================================================
48 
49 #include <QCheckBox>
50 #include <QGridLayout>
51 #include <QPushButton>
52 #include <QSettings>
53 
54 //=============================================================================================================
55 // EIGEN INCLUDES
56 //=============================================================================================================
57 
58 //=============================================================================================================
59 // USED NAMESPACES
60 //=============================================================================================================
61 
62 using namespace DISPLIB;
63 
64 //=============================================================================================================
65 // DEFINE MEMBER METHODS
66 //=============================================================================================================
67 
68 FilterSettingsView::FilterSettingsView(const QString& sSettingsPath,
69  QWidget *parent,
70  Qt::WindowFlags f)
71 : AbstractView(parent, f)
72 , m_pUi(new Ui::FilterSettingsViewWidget)
73 {
74  m_sSettingsPath = sSettingsPath;
75  this->setWindowTitle("Filter Settings");
76 
77  m_pUi->setupUi(this);
78 
79  loadSettings();
80 
81  //Create and connect design viewer
82  m_pFilterView = FilterDesignView::SPtr::create(m_sSettingsPath,
83  Q_NULLPTR,
84  Qt::Dialog);
85 
86  connect(m_pFilterView.data(), &FilterDesignView::updateFilterFrom,[=](double dFrom){
87  m_pUi->m_pDoubleSpinBoxFrom->setValue(dFrom);
88  });
89  connect(m_pFilterView.data(), &FilterDesignView::updateFilterTo,[=](double dTo){
90  m_pUi->m_pDoubleSpinBoxTo->setValue(dTo);
91  });
92 
95 
96  m_pUi->m_pDoubleSpinBoxFrom->setValue(m_pFilterView->getFrom());
97  m_pUi->m_pDoubleSpinBoxTo->setValue(m_pFilterView->getTo());
98 
99  //Connect GUI elements
100  connect(m_pUi->m_pCheckBoxActivateFilter, &QCheckBox::toggled,
102  connect(m_pUi->m_pPushButtonShowFilterOptions, &QPushButton::clicked,
104  connect(m_pUi->m_pDoubleSpinBoxFrom, &QDoubleSpinBox::editingFinished,
106  connect(m_pUi->m_pDoubleSpinBoxTo, &QDoubleSpinBox::editingFinished,
108  connect(m_pUi->m_pcomboBoxChannelTypes, &QComboBox::currentTextChanged,
110 }
111 
112 //=============================================================================================================
113 
115 {
116  saveSettings();
117  delete m_pUi;
118 }
119 
120 //=============================================================================================================
121 
122 QSharedPointer<FilterDesignView> FilterSettingsView::getFilterView()
123 {
124  return m_pFilterView;
125 }
126 
127 //=============================================================================================================
128 
130 {
131  return m_pUi->m_pCheckBoxActivateFilter->isChecked();
132 }
133 
134 //=============================================================================================================
135 
137 {
138  //Update min max of spin boxes to nyquist
139  double nyquistFrequency = dSFreq/2;
140 
141  m_pUi->m_pDoubleSpinBoxFrom->setMaximum(nyquistFrequency);
142  m_pUi->m_pDoubleSpinBoxTo->setMaximum(nyquistFrequency);
143 
144  if(m_pUi->m_pDoubleSpinBoxFrom->value() > dSFreq/2) {
145  m_pUi->m_pDoubleSpinBoxFrom->setValue(dSFreq/2);
146  }
147 
148  if(m_pUi->m_pDoubleSpinBoxTo->value() > dSFreq/2) {
149  m_pUi->m_pDoubleSpinBoxTo->setValue(dSFreq/2);
150  }
151 
152  m_pFilterView->setSamplingRate(dSFreq);
153 }
154 
155 //=============================================================================================================
156 
158 {
159  if(m_sSettingsPath.isEmpty()) {
160  return;
161  }
162 
163  QSettings settings("MNECPP");
164 
165  settings.setValue(m_sSettingsPath + QString("/FilterSettingsView/filterActivated"), m_pUi->m_pCheckBoxActivateFilter->isChecked());
166  settings.setValue(m_sSettingsPath + QString("/FilterSettingsView/filterFrom"), m_pUi->m_pDoubleSpinBoxFrom->value());
167  settings.setValue(m_sSettingsPath + QString("/FilterSettingsView/filterTo"), m_pUi->m_pDoubleSpinBoxTo->value());
168  settings.setValue(m_sSettingsPath + QString("/FilterSettingsView/filterChannelType"), m_pUi->m_pcomboBoxChannelTypes->currentText());
169 }
170 
171 //=============================================================================================================
172 
174 {
175  if(m_sSettingsPath.isEmpty()) {
176  return;
177  }
178 
179  QSettings settings("MNECPP");
180 
181  m_pUi->m_pCheckBoxActivateFilter->setChecked(settings.value(m_sSettingsPath + QString("/FilterSettingsView/filterActivated"), false).toBool());
182  m_pUi->m_pDoubleSpinBoxTo->setValue(settings.value(m_sSettingsPath + QString("/FilterSettingsView/filterTo"), 0).toDouble());
183  m_pUi->m_pDoubleSpinBoxFrom->setValue(settings.value(m_sSettingsPath + QString("/FilterSettingsView/filterFrom"), 0).toDouble());
184  m_pUi->m_pcomboBoxChannelTypes->setCurrentText(settings.value(m_sSettingsPath + QString("/FilterSettingsView/filterChannelType"), "All").toString());
185 }
186 
187 //=============================================================================================================
188 
190 {
191  switch(mode) {
192  case GuiMode::Clinical:
193  m_pUi->m_pPushButtonShowFilterOptions->hide();
194  break;
195  default: // default is research mode
196  m_pUi->m_pPushButtonShowFilterOptions->show();
197  break;
198  }
199 }
200 
201 //=============================================================================================================
202 
204 {
205  switch(mode) {
206  case ProcessingMode::Offline:
207  break;
208  default: // default is realtime mode
209  break;
210  }
211 }
212 
213 //=============================================================================================================
214 
216 {
217  if(m_pFilterView->isActiveWindow()) {
218  m_pFilterView->hide();
219  } else {
220  m_pFilterView->activateWindow();
221  m_pFilterView->show();
222  m_pFilterView->updateFilterPlot();
223  }
224 }
225 
226 //=============================================================================================================
227 
229 {
230  emit filterActivationChanged(m_pUi->m_pCheckBoxActivateFilter->isChecked());
231 
232  saveSettings();
233 }
234 
235 //=============================================================================================================
236 
238 {
239  m_pFilterView->setFrom(m_pUi->m_pDoubleSpinBoxFrom->value());
240 
241  saveSettings();
242 }
243 
244 //=============================================================================================================
245 
247 {
248  if(m_pUi->m_pDoubleSpinBoxFrom->value() >= 2) {
249  m_pUi->m_pDoubleSpinBoxFrom->setMaximum(m_pUi->m_pDoubleSpinBoxTo->value()-1);
250  } else {
251  m_pUi->m_pDoubleSpinBoxFrom->setMaximum(m_pUi->m_pDoubleSpinBoxTo->value());
252  }
253 
254  m_pFilterView->setTo(m_pUi->m_pDoubleSpinBoxTo->value());
255 
256  saveSettings();
257 }
258 
259 //=============================================================================================================
260 
262 {
263  m_pFilterView->setChannelType(sType);
264 
265  saveSettings();
266 }
267 
268 //=============================================================================================================
269 
271 {
272 
273 }
void updateProcessingMode(ProcessingMode mode)
void guiStyleChanged(DISPLIB::AbstractView::StyleMode style)
QSharedPointer< FilterDesignView > getFilterView()
void guiStyleChanged(DISPLIB::AbstractView::StyleMode style)
Definition: applytoview.h:58
void setSamplingRate(double dSFreq)
QSharedPointer< FilterDesignView > m_pFilterView
Contains the declaration of the FilterDesignView class.
void filterActivationChanged(bool activated)
void updateFilterTo(double dTo)
Declaration of the FilterSettingsView Class.
void updateFilterFrom(double dFrom)
FilterSettingsView(const QString &sSettingsPath="", QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
The AbstractView class provides the base calss for all Disp viewers.
Definition: abstractview.h:75
Ui::FilterSettingsViewWidget * m_pUi
void onFilterChannelTypeChanged(const QString &sType)