38: QStandardItemModel(pParent)
52 QStandardItem* pNewItem,
59 if(!selectedItem.isValid()) {
67 qDebug() <<
"[BidsViewModel::addData] Prompt user to select a session";
74 if(!selectedItem.isValid()) {
75 QStandardItem* pItem =
new QStandardItem(
"Unknown");
76 pItem->setEditable(
false);
77 pItem->setDragEnabled(
true);
96 const QModelIndex &parentIndex,
99 QStandardItem* selectedData = itemFromIndex(parentIndex);
100 selectedData->setChild(selectedData->rowCount(),
105 pNewAvgItem->setData(QVariant::fromValue(iDataType),
BIDS_ITEM_TYPE);
115 QString sNewSubjectName;
117 if(!sSubjectName.startsWith(
"sub-")){
118 sNewSubjectName =
"sub-" + sSubjectName;
120 sNewSubjectName = sSubjectName;
123 sNewSubjectName.remove(
" ");
126 QStandardItem* pSubjectItem =
new QStandardItem(sNewSubjectName);
127 appendRow(pSubjectItem);
130 pSubjectItem->setData(QVariant::fromValue(pSubjectItem->index()),
BIDS_ITEM_SUBJECT);
134 return pSubjectItem->index();
140 const QString &sSessionName)
143 QString sNewSessionName;
145 if(!sSessionName.startsWith(
"ses-")){
146 sNewSessionName =
"ses-" + sSessionName;
148 sNewSessionName = sSessionName;
151 sNewSessionName.remove(
" ");
153 QList<QStandardItem*> listItems = findItems(sSubjectName);
154 bool bRepeat =
false;
157 if (listItems.size() > 1) {
158 qWarning() <<
"[BidsViewModel::addSessionToSubject] Multiple subjects with same name";
160 }
else if (listItems.size() == 0) {
161 qWarning() <<
"[BidsViewModel::addSessionToSubject] No Subject found with name:" << sSubjectName;
162 return QModelIndex();
165 QStandardItem* pNewSessionItem;
168 for (
int i = 0; i < listItems.size(); i++){
169 QStandardItem* pSubjectItem = listItems.at(i);
172 pSubjectItem->setText(pSubjectItem->text() + QString::number(i + 1));
175 pNewSessionItem =
new QStandardItem(sNewSessionName);
176 pSubjectItem->setChild(pSubjectItem->rowCount(),
180 pNewSessionItem->setData(QVariant::fromValue(pSubjectItem->index()),
BIDS_ITEM_SUBJECT);
181 pNewSessionItem->setData(QVariant::fromValue(pNewSessionItem->index()),
BIDS_ITEM_SESSION);
186 return pNewSessionItem->index();
192 const QString &sSessionName)
195 QString sNewSessionName;
197 if(!sSessionName.startsWith(
"ses-")){
198 sNewSessionName =
"ses-" + sSessionName;
200 sNewSessionName = sSessionName;
203 sNewSessionName.remove(
" ");
205 QStandardItem* pSubjectItem = itemFromIndex(subjectIndex);
206 QStandardItem* pNewSessionItem =
new QStandardItem(sNewSessionName);
207 pSubjectItem->setChild(pSubjectItem->rowCount(),
212 pNewSessionItem->setData(QVariant::fromValue(pNewSessionItem->index()),
BIDS_ITEM_SESSION);
216 return pNewSessionItem->index();
222 QStandardItem *pNewItem,
225 QStandardItem* pSessionItem = itemFromIndex(sessionIndex);
226 bool bFolder =
false;
233 sFolderName =
"func";
236 sFolderName =
"anat";
241 sFolderName =
"unknown";
244 for(iFolder = 0; iFolder < pSessionItem->rowCount(); iFolder++){
245 if (pSessionItem->child(iFolder)->text() == sFolderName){
252 QStandardItem* pFunctionalItem =
new QStandardItem(sFolderName);
257 pSessionItem->setChild(pSessionItem->rowCount(),
259 pFunctionalItem->setChild(pFunctionalItem->rowCount(),
262 pSessionItem->child(iFolder)->setChild(pSessionItem->child(iFolder)->rowCount(),
266 pNewItem->setData(QVariant::fromValue(iDataType),
BIDS_ITEM_TYPE);
272 return pNewItem->index();
278 QModelIndex sessionIndex)
282 QStandardItem* subjectItem = itemFromIndex(subjectIndex);
283 QStandardItem* sessionItem = itemFromIndex(sessionIndex);
285 sessionItem->parent()->takeRow(sessionItem->row());
287 subjectItem->setChild(subjectItem->rowCount(), sessionItem);
290 for (
int i = 0; i < sessionItem->rowCount(); i++){
292 for (
int j = 0; j < sessionItem->child(i)->rowCount(); j++) {
301 return sessionItem->index();
307 QModelIndex dataIndex)
311 QStandardItem* dataItem = itemFromIndex(dataIndex);
313 if(dataItem->parent()->rowCount() < 2){
314 QStandardItem* parent = dataItem->parent();
316 dataItem->parent()->takeRow(dataItem->row()).first();
317 parent->parent()->takeRow(parent->row()).first();
319 dataItem->parent()->takeRow(dataItem->row()).first();
322 QModelIndex newIndex;
351 if(!itemIndex.isValid()){
357 QStandardItem* pItem = itemFromIndex(itemIndex);
359 qInfo() <<
"Deleting" << pItem->text();
363 if(removeRows(itemIndex.row(), 1, itemIndex.parent())){
368 if(removeRows(itemIndex.row(), 1, itemIndex.parent())){
375 if(removeRows(itemIndex.row(), 1, itemIndex.parent())){
382 if(removeRows(itemIndex.row(), 1, itemIndex.parent())){
387 if(removeRows(itemIndex.row(), 1, itemIndex.parent())){
QStandardItemModel mirroring the BIDS dataset hierarchy (subjects / sessions / runs / derivatives).
#define BIDS_ITEM_SESSION
#define BIDS_ITEM_SUBJECT
#define BIDS_BEHAVIORALDATA
#define BIDS_FUNCTIONALDATA
#define BIDS_ANATOMICALDATA
2-D display widgets and visualisation helpers (charts, topography, colour maps).
QModelIndex addDataToSession(QModelIndex sessionIndex, QStandardItem *pNewItem, int iDataType)
bool removeItem(QModelIndex itemIndex)
BidsViewModel(QObject *pParent=nullptr)
QModelIndex moveSessionToSubject(QModelIndex subjectIndex, QModelIndex sessionIndex)
void newItemIndex(QModelIndex itemIndex)
QModelIndex moveDataToSession(QModelIndex sessionIndex, QModelIndex dataIndex)
QModelIndex addSubject(const QString &sSubjectName)
void addToData(QStandardItem *pNewItem, const QModelIndex &parentIndex, int iDataType)
QModelIndex addSessionToSubject(const QString &sSubjectName, const QString &sSessionName)
void addData(QModelIndex selectedItem, QStandardItem *pNewItem, int iDataType)