58 : QAbstractTableModel(parent)
62 , m_bInitialized(false)
74 if(!m_qMapIdxRowSelection.empty())
75 return m_qMapIdxRowSelection.size();
93 if(role != Qt::DisplayRole && role != Qt::BackgroundRole)
96 if (index.isValid()) {
97 qint32 r = m_qMapIdxRowSelection[index.row()];
100 if(index.column() == 0 && role == Qt::DisplayRole)
102 return QVariant(m_pFiffInfo->chs[r].ch_name);
106 if(index.column()==1) {
110 case Qt::DisplayRole: {
117 vec = m_dataCurrentFreeze.row(r);
123 vec = m_dataCurrent.row(r);
129 case Qt::BackgroundRole: {
155 if(role != Qt::DisplayRole && role != Qt::TextAlignmentRole)
158 if(orientation == Qt::Horizontal) {
163 return QVariant(
"data plot");
165 case Qt::DisplayRole:
166 return QVariant(
"data plot");
167 case Qt::TextAlignmentRole:
168 return QVariant(Qt::AlignLeft);
172 else if(orientation == Qt::Vertical) {
173 QModelIndex chname = createIndex(section,0);
175 case Qt::DisplayRole:
176 return QVariant(
data(chname).toString());
200 m_iScaleType = ScaleType;
207 m_dataCurrent =
data;
209 if(m_vecFreqScale.size() != m_dataCurrent.cols() && m_pFiffInfo)
211 double freqRes = (m_pFiffInfo->sfreq/2) / m_dataCurrent.cols();
213 m_vecFreqScale.resize(1,m_dataCurrent.cols());
216 for(qint32 i = 0; i < m_dataCurrent.cols(); ++i)
219 m_vecFreqScale[i] = log10(currFreq+k);
221 m_vecFreqScale[i] = currFreq;
226 double max = m_vecFreqScale.maxCoeff();
227 m_vecFreqScale /= max;
229 m_vecFreqScaleBound = m_vecFreqScale;
231 m_iUpperFrqIdx = m_vecFreqScale.size()-1;
234 m_bInitialized =
true;
238 QModelIndex topLeft = this->index(0,1);
239 QModelIndex bottomRight = this->index(m_dataCurrent.rows()-1,1);
240 QVector<int> roles; roles << Qt::DisplayRole;
241 emit dataChanged(topLeft, bottomRight, roles);
251 m_qMapIdxRowSelection.clear();
254 for(qint32 i = 0; i < selection.size(); ++i)
256 if(selection[i] < m_pFiffInfo->chs.size())
258 m_qMapIdxRowSelection.insert(count,selection[i]);
275 m_qMapIdxRowSelection.clear();
277 for(qint32 i = 0; i < m_pFiffInfo->chs.size(); ++i)
278 m_qMapIdxRowSelection.insert(i,i);
288 m_bIsFreezed = !m_bIsFreezed;
291 m_dataCurrentFreeze = m_dataCurrent;
294 QModelIndex topLeft = this->index(0,1);
295 QModelIndex bottomRight = this->index(m_dataCurrent.rows()-1,1);
296 QVector<int> roles; roles << Qt::DisplayRole;
297 emit dataChanged(topLeft, bottomRight, roles);
310 double nf = m_pFiffInfo->sfreq/2;
313 m_iUpperFrqIdx = m_vecFreqScale.size()-1;
316 for(qint32 i = 0; i < m_vecFreqScale.size(); ++i)
318 float val = m_vecFreqScale[i]*nf;
319 if( val < fLowerFrqBound)
322 if( val > fUpperFrqBound)
330 m_vecFreqScaleBound = m_vecFreqScale;
331 for(qint32 i = 0; i < m_vecFreqScaleBound.size(); ++i)
332 m_vecFreqScaleBound[i] = (m_vecFreqScaleBound[i] - m_vecFreqScale[m_iLowerFrqIdx]) / (m_vecFreqScale[m_iUpperFrqIdx] - m_vecFreqScale[m_iLowerFrqIdx]);
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
void newSelection(QList< qint32 > selection)
void addData(const MatrixXd &data)
void selectRows(const QList< qint32 > &selection)
void setInfo(FiffInfo::SPtr &info)
Declaration of the FrequencySpectrumModel Class.
QSharedPointer< FiffInfo > SPtr
void setScaleType(qint8 ScaleType)
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
void setBoundaries(float fLowerFrqBound, float fUpperFrqBound)
void toggleFreeze(const QModelIndex &index)
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
FrequencySpectrumModel(QObject *parent=0)