#include "SciQWorkspaceModel.h" #include SciQWorkspaceModel::SciQWorkspaceModel(SciQWorkspaceItem *i, QObject *parent) : QAbstractItemModel(parent), root(i) { } SciQWorkspaceModel::~SciQWorkspaceModel() { } QVariant SciQWorkspaceModel::data(const QModelIndex &index, int role) const { if (!index.isValid() /*|| index.column() != 0*/) return QVariant(); SciQWorkspaceItem *i = static_cast(index.internalPointer()); if (role == Qt::DisplayRole) { return QVariant(i->getName()); } return QVariant(); } Qt::ItemFlags SciQWorkspaceModel::flags(const QModelIndex &index) const { if (!index.isValid()) return Qt::ItemIsEnabled; return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant SciQWorkspaceModel::headerData(int section, Qt::Orientation orientation, int role) const { if(!section) return QVariant("Workspace"); return QVariant(); } QModelIndex SciQWorkspaceModel::index(int row, int column, const QModelIndex &pmi) const { SciQWorkspaceItem *i = 0; if(row >= rowCount(pmi)) return QModelIndex(); if (!pmi.isValid()) i = static_cast(root); else i = (SciQWorkspaceItem *)pmi.internalPointer(); if(!i) return QModelIndex(); SciQWorkspaceItem *childItem = i->child(row); if (childItem) { // qDebug() << __PRETTY_FUNCTION__ << ": " << i->getName() << "::" << row << ":" << childItem->row() << " : " << i->childCount(); return createIndex(row, column, childItem); } return QModelIndex(); } QModelIndex SciQWorkspaceModel::parent(const QModelIndex &index) const { if (!index.isValid()) return QModelIndex(); SciQWorkspaceItem *i = (SciQWorkspaceItem *)index.internalPointer(); if (!i || i == root) return QModelIndex(); SciQWorkspaceItem *p = i->getParent(); if(p) { int prow = p->row(); // qDebug() << prow; return createIndex(prow >= 0 ? prow : 0, 0, p); } return QModelIndex(); } int SciQWorkspaceModel::rowCount(const QModelIndex &pmi) const { SciQWorkspaceItem *i; if (!pmi.isValid()) i = static_cast(root); else i = (SciQWorkspaceItem *)pmi.internalPointer(); if(!i) return 0; int count = 0; count = i->childCount(); // qDebug() << __PRETTY_FUNCTION__ << ": " << count << ": " << i->getName(); return count > -1 ? count : 0; } int SciQWorkspaceModel::columnCount(const QModelIndex&) const { return 1; } /* bool SciQWorkspaceModel::hasChildren ( const QModelIndex & parent ) const { SciQWorkspaceItem *i; if (!parent.isValid()) i = root; else i = (SciQWorkspaceItem *)parent.internalPointer(); if(!i) return false; return i->childCount(); }*/