-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathObjectTreeModel.h
61 lines (44 loc) · 1.77 KB
/
ObjectTreeModel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#pragma once
#include "lib/ObjectProxy.h"
#include <QtCore/QAbstractItemModel>
#include <QtCore/QWeakPointer>
class ObjectFilter;
class ObjectTreeModel : public QAbstractItemModel
{
Q_OBJECT
public:
ObjectTreeModel(QObject* parent);
void setFilter(ObjectFilter *filter);
void setRootObjects(const QList<ObjectProxy::Pointer>& roots);
QList<ObjectProxy::Pointer> rootObjects() const;
QList<ObjectProxy::Pointer> search(const QString& query) const;
QModelIndex index(ObjectProxy::Pointer object) const;
virtual int columnCount(const QModelIndex& parent) const;
virtual int rowCount(const QModelIndex& parent) const;
virtual QModelIndex index(int row, int column, const QModelIndex& parent) const;
virtual QModelIndex parent(const QModelIndex& index) const;
virtual QVariant data(const QModelIndex& index, int role) const;
virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
static ObjectProxy::Pointer objectFromIndex(const QModelIndex& index);
private:
class ObjectItem
{
public:
~ObjectItem()
{
qDeleteAll(children);
}
ObjectItem* parent;
QList<ObjectItem*> children;
ObjectProxy::Pointer object;
};
int indexInParent(ObjectItem* item) const;
ObjectItem* index(ObjectProxy::Pointer object, const QList<ObjectItem*>& items) const;
static ObjectItem* createItem(ObjectProxy::Pointer object, ObjectItem* parent, ObjectFilter *filter);
static ObjectItem* itemFromIndex(const QModelIndex& index);
bool matches(ObjectProxy::Pointer object, const QString& query) const;
void search(QList<ObjectProxy::Pointer>* matches, ObjectItem* item, const QString& query) const;
QString displayText(ObjectProxy::Pointer object) const;
QList<ObjectItem*> m_roots;
ObjectFilter* m_filter;
};