| 1 |
1 |
moose |
#ifndef SciQWorkspaceModel_H_GUARD |
| 2 |
|
|
#define SciQWorkspaceModel_H_GUARD |
| 3 |
|
|
|
| 4 |
|
|
#include <QAbstractItemModel> |
| 5 |
|
|
#include <QString> |
| 6 |
|
|
class SciQWorkspaceItem |
| 7 |
|
|
{ |
| 8 |
|
|
public: |
| 9 |
|
|
SciQWorkspaceItem(QString s, SciQWorkspaceItem *p = 0) : name(s), parent(p) { if(parent) parent->children.append(this); } |
| 10 |
|
|
~SciQWorkspaceItem() { if(children.count()) for(int i = 0; i < children.count(); ++i) delete children[i]; } |
| 11 |
|
|
|
| 12 |
|
|
SciQWorkspaceItem *getParent() { return parent; } |
| 13 |
|
|
int childCount() { return children.count(); } |
| 14 |
|
|
SciQWorkspaceItem *child(int i) { return children.at(i); } |
| 15 |
|
|
int row() { int r = 0; if(parent) { r = parent->children.indexOf(this); r = r > -1 ? r : 0; } return r; } |
| 16 |
|
|
QString getName() { return name; } |
| 17 |
|
|
private: |
| 18 |
|
|
QString name; |
| 19 |
|
|
SciQWorkspaceItem *parent; |
| 20 |
|
|
QList<SciQWorkspaceItem *> children; |
| 21 |
|
|
}; |
| 22 |
|
|
|
| 23 |
|
|
class SciQWorkspaceModel : public QAbstractItemModel { |
| 24 |
|
|
Q_OBJECT |
| 25 |
|
|
|
| 26 |
|
|
public: |
| 27 |
|
|
SciQWorkspaceModel(SciQWorkspaceItem *, QObject *parent = 0); |
| 28 |
|
|
~SciQWorkspaceModel(); |
| 29 |
|
|
|
| 30 |
|
|
QVariant data(const QModelIndex &index, int role) const; |
| 31 |
|
|
Qt::ItemFlags flags(const QModelIndex &index) const; |
| 32 |
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; |
| 33 |
|
|
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; |
| 34 |
|
|
QModelIndex parent(const QModelIndex &index) const; |
| 35 |
|
|
int rowCount(const QModelIndex &parent = QModelIndex()) const; |
| 36 |
|
|
int columnCount(const QModelIndex&) const; |
| 37 |
|
|
// bool hasChildren ( const QModelIndex & parent = QModelIndex() ) const; |
| 38 |
|
|
|
| 39 |
|
|
private: |
| 40 |
|
|
SciQWorkspaceItem *root; |
| 41 |
|
|
}; |
| 42 |
|
|
|
| 43 |
|
|
#endif /* SciQWorkspaceModel_H_GUARD */ |