| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#include "SciQWorkspaceModel.h"
#include <QDebug>
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<SciQWorkspaceItem *>(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<SciQWorkspaceItem *>(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<SciQWorkspaceItem *>(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();
}*/