Line # Revision Author
1 1 moose #include "SciQWorkspaceModel.h"
2 #include <QDebug>
3 SciQWorkspaceModel::SciQWorkspaceModel(SciQWorkspaceItem *i, QObject *parent) :
4 QAbstractItemModel(parent), root(i) { }
5
6 SciQWorkspaceModel::~SciQWorkspaceModel() { }
7
8 QVariant SciQWorkspaceModel::data(const QModelIndex &index, int role) const
9 {
10 if (!index.isValid() /*|| index.column() != 0*/)
11 return QVariant();
12
13 SciQWorkspaceItem *i = static_cast<SciQWorkspaceItem *>(index.internalPointer());
14 if (role == Qt::DisplayRole) {
15 return QVariant(i->getName());
16 }
17
18 return QVariant();
19 }
20
21 Qt::ItemFlags SciQWorkspaceModel::flags(const QModelIndex &index) const
22 {
23 if (!index.isValid())
24 return Qt::ItemIsEnabled;
25
26 return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
27 }
28
29 QVariant SciQWorkspaceModel::headerData(int section, Qt::Orientation orientation, int role) const
30 {
31 if(!section)
32 return QVariant("Workspace");
33
34 return QVariant();
35 }
36
37 QModelIndex SciQWorkspaceModel::index(int row, int column, const QModelIndex &pmi) const
38 {
39 SciQWorkspaceItem *i = 0;
40 if(row >= rowCount(pmi))
41 return QModelIndex();
42
43 if (!pmi.isValid())
44 i = static_cast<SciQWorkspaceItem *>(root);
45 else
46 i = (SciQWorkspaceItem *)pmi.internalPointer();
47
48 if(!i)
49 return QModelIndex();
50
51 SciQWorkspaceItem *childItem = i->child(row);
52 if (childItem) {
53 // qDebug() << __PRETTY_FUNCTION__ << ": " << i->getName() << "::" << row << ":" << childItem->row() << " : " << i->childCount();
54 return createIndex(row, column, childItem);
55 }
56
57 return QModelIndex();
58 }
59
60 QModelIndex SciQWorkspaceModel::parent(const QModelIndex &index) const
61 {
62 if (!index.isValid())
63 return QModelIndex();
64
65 SciQWorkspaceItem *i = (SciQWorkspaceItem *)index.internalPointer();
66 if (!i || i == root)
67 return QModelIndex();
68
69 SciQWorkspaceItem *p = i->getParent();
70 if(p) {
71 int prow = p->row();
72 // qDebug() << prow;
73 return createIndex(prow >= 0 ? prow : 0, 0, p);
74 }
75 return QModelIndex();
76 }
77
78 int SciQWorkspaceModel::rowCount(const QModelIndex &pmi) const
79 {
80 SciQWorkspaceItem *i;
81
82 if (!pmi.isValid())
83 i = static_cast<SciQWorkspaceItem *>(root);
84 else
85 i = (SciQWorkspaceItem *)pmi.internalPointer();
86
87 if(!i)
88 return 0;
89
90 int count = 0;
91
92 count = i->childCount();
93
94 // qDebug() << __PRETTY_FUNCTION__ << ": " << count << ": " << i->getName();
95
96 return count > -1 ? count : 0;
97 }
98
99 int SciQWorkspaceModel::columnCount(const QModelIndex&) const
100 {
101 return 1;
102 }
103
104 /*
105 bool SciQWorkspaceModel::hasChildren ( const QModelIndex & parent ) const
106 {
107 SciQWorkspaceItem *i;
108
109 if (!parent.isValid())
110 i = root;
111 else
112 i = (SciQWorkspaceItem *)parent.internalPointer();
113
114 if(!i)
115 return false;
116
117 return i->childCount();
118
119 }*/