71 #include <QVBoxLayout>
73 #include <QHeaderView>
104 , m_pFSModel(Q_NULLPTR)
105 , m_pFSDelegate(Q_NULLPTR)
106 , m_pTableView(Q_NULLPTR)
108 , m_fLowerFrqBound(0)
109 , m_fUpperFrqBound(300)
110 , m_bInitialized(false)
115 m_pActionFrequencySettings =
new QAction(QIcon(
":/images/frqResolution.png"), tr(
"Shows the frequency spectrum settings widget (F12)"),
this);
116 m_pActionFrequencySettings->setShortcut(tr(
"F12"));
117 m_pActionFrequencySettings->setStatusTip(tr(
"Shows the frequency spectrum settings widget (F12)"));
118 connect(m_pActionFrequencySettings, &QAction::triggered,
this, &FrequencySpectrumWidget::showFrequencySpectrumSettingsWidget);
121 m_pActionFrequencySettings->setVisible(
false);
125 m_pTableView =
new QTableView;
127 m_pTableView->setSelectionMode( QAbstractItemView::ExtendedSelection );
128 m_pTableView->setMouseTracking(
true );
129 m_pTableView->viewport()->installEventFilter(
this );
132 QVBoxLayout *neLayout =
new QVBoxLayout(
this);
138 neLayout->addWidget(m_pTableView);
141 this->setLayout(neLayout);
154 if(!m_pFS->getName().isEmpty())
156 QString t_sFSName = m_pFS->getName();
160 settings.setValue(QString(
"FSW/%1/lowerFrqBound").arg(t_sFSName), m_fLowerFrqBound);
161 settings.setValue(QString(
"FSW/%1/upperFrqBound").arg(t_sFSName), m_fUpperFrqBound);
186 m_pFSModel->
addData(m_pFS->getValue());
192 m_pFSModel->
addData(m_pFS->getValue());
200 if(m_pFS->getFiffInfo())
203 if(!m_pFS->getName().isEmpty())
205 QString t_sFSName = m_pFS->getName();
206 m_fLowerFrqBound = settings.value(QString(
"FSW/%1/lowerFrqBound").arg(t_sFSName), 0).toFloat();
207 m_fUpperFrqBound = settings.value(QString(
"FSW/%1/upperFrqBound").arg(t_sFSName), 300).toFloat();
210 m_pActionFrequencySettings->setVisible(
true);
216 m_pFSModel->
setInfo(m_pFS->getFiffInfo());
220 delete m_pFSDelegate;
233 m_pTableView->setModel(m_pFSModel);
234 m_pTableView->setItemDelegate(m_pFSDelegate);
237 m_pTableView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
239 m_pTableView->setShowGrid(
false);
241 m_pTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
242 m_pTableView->horizontalHeader()->hide();
243 m_pTableView->verticalHeader()->setDefaultSectionSize(140);
245 m_pTableView->setAutoScroll(
false);
246 m_pTableView->setColumnHidden(0,
true);
248 m_pTableView->resizeColumnsToContents();
250 m_pTableView->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
253 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);
256 m_bInitialized =
true;
268 if(!m_pFrequencySpectrumSettingsWidget)
272 m_pFrequencySpectrumSettingsWidget->setWindowTitle(
"Frequency Spectrum Settings");
274 connect(m_pFrequencySpectrumSettingsWidget.data(), &FrequencySpectrumSettingsWidget::settingsChanged,
this, &FrequencySpectrumWidget::broadcastSettings);
277 if(m_pFS->isInit() && m_pFS->getFiffInfo())
279 m_fUpperFrqBound = m_fLowerFrqBound < m_fUpperFrqBound ? m_fUpperFrqBound : m_fLowerFrqBound;
280 m_pFrequencySpectrumSettingsWidget->m_pSliderLowerBound->setMinimum(0);
281 m_pFrequencySpectrumSettingsWidget->m_pSliderLowerBound->setMaximum((qint32)(m_pFS->getFiffInfo()->sfreq/2)*1000);
282 m_pFrequencySpectrumSettingsWidget->m_pSliderLowerBound->setValue((qint32)(m_fLowerFrqBound*1000));
284 m_pFrequencySpectrumSettingsWidget->m_pSliderUpperBound->setMinimum(0);
285 m_pFrequencySpectrumSettingsWidget->m_pSliderUpperBound->setMaximum((qint32)(m_pFS->getFiffInfo()->sfreq/2)*1000);
286 m_pFrequencySpectrumSettingsWidget->m_pSliderUpperBound->setValue((qint32)(m_fUpperFrqBound*1000));
294 void FrequencySpectrumWidget::broadcastSettings()
296 if(m_pFrequencySpectrumSettingsWidget)
298 m_fLowerFrqBound = m_pFrequencySpectrumSettingsWidget->m_pSliderLowerBound->value()/1000.0f;
299 m_fUpperFrqBound = m_pFrequencySpectrumSettingsWidget->m_pSliderUpperBound->value()/1000.0f;
300 m_pFSModel->
setBoundaries(m_fLowerFrqBound,m_fUpperFrqBound);
307 void FrequencySpectrumWidget::showFrequencySpectrumSettingsWidget()
310 m_pFrequencySpectrumSettingsWidget->show();
316 bool FrequencySpectrumWidget::eventFilter(QObject * watched, QEvent * event)
318 if(event->type() == QEvent::MouseMove){
319 QMouseEvent *mouseEvent = static_cast <QMouseEvent*>( event );
322 int currentRow = m_pTableView->rowAt(mouseEvent->y());
323 m_pTableView->selectRow(currentRow);
325 QModelIndex item = m_pTableView->currentIndex();
327 emit
sendMouseLoc(item.row(), mouseEvent->x(), mouseEvent->y(),m_pTableView->visualRect(item) );
333 return QWidget::eventFilter(watched, event);
void addData(const MatrixXd &data)
void setInfo(FiffInfo::SPtr &info)
The FrequencySpectrumModel class implements the data access model for a real-time multi sample array ...
void setScaleType(qint8 ScaleType)
The FrequencySpectrumDelegate class represents a RTMSA delegate which creates the plot paths...
void rcvMouseLoc(int row, int x, int y, QRect visRect)
void setBoundaries(float fLowerFrqBound, float fUpperFrqBound)
void toggleFreeze(const QModelIndex &index)
QSharedPointer< NewMeasurement > SPtr
Contains the declaration of the FrequencySpectrum class.
void setScaleType(qint8 ScaleType)