| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#ifndef SciQWorkspaceModel_H_GUARD
#define SciQWorkspaceModel_H_GUARD
#include <QAbstractItemModel>
#include <QString>
class SciQWorkspaceItem
{
public:
SciQWorkspaceItem(QString s, SciQWorkspaceItem *p = 0) : name(s), parent(p) { if(parent) parent->children.append(this); }
~SciQWorkspaceItem() { if(children.count()) for(int i = 0; i < children.count(); ++i) delete children[i]; }
SciQWorkspaceItem *getParent() { return parent; }
int childCount() { return children.count(); }
SciQWorkspaceItem *child(int i) { return children.at(i); }
int row() { int r = 0; if(parent) { r = parent->children.indexOf(this); r = r > -1 ? r : 0; } return r; }
QString getName() { return name; }
private:
QString name;
SciQWorkspaceItem *parent;
QList<SciQWorkspaceItem *> children;
};
class SciQWorkspaceModel : public QAbstractItemModel {
Q_OBJECT
public:
SciQWorkspaceModel(SciQWorkspaceItem *, QObject *parent = 0);
~SciQWorkspaceModel();
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex&) const;
// bool hasChildren ( const QModelIndex & parent = QModelIndex() ) const;
private:
SciQWorkspaceItem *root;
};
#endif /* SciQWorkspaceModel_H_GUARD */