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 */