+ void customEvent(QEvent *event);
+
+private:
+ QList<AbstractTreeItem *> _childItems;
+ Qt::ItemFlags _flags;
+ TreeItemFlags _treeItemFlags;
+
+ void removeChildLater(AbstractTreeItem *child);
+ inline void checkForDeletion()
+ {
+ if (treeItemFlags() & DeleteOnLastChildRemoved && childCount() == 0) parent()->removeChildLater(this);
+ }
+};
+
+
+/*****************************************
+ * SimpleTreeItem
+ *****************************************/
+class SimpleTreeItem : public AbstractTreeItem
+{
+ Q_OBJECT
+
+public:
+ SimpleTreeItem(const QList<QVariant> &data, AbstractTreeItem *parent = 0);
+ virtual ~SimpleTreeItem();
+
+ virtual QVariant data(int column, int role) const;
+ virtual bool setData(int column, const QVariant &value, int role);
+
+ virtual int columnCount() const;
+
+private:
+ QList<QVariant> _itemData;
+};
+
+
+/*****************************************
+ * PropertyMapItem
+ *****************************************/
+class PropertyMapItem : public AbstractTreeItem
+{
+ Q_OBJECT
+
+public:
+ PropertyMapItem(const QStringList &propertyOrder, AbstractTreeItem *parent = 0);
+ PropertyMapItem(AbstractTreeItem *parent = 0);
+
+ virtual ~PropertyMapItem();
+
+ virtual QVariant data(int column, int role) const;
+ virtual bool setData(int column, const QVariant &value, int role);
+
+ virtual QString toolTip(int column) const { Q_UNUSED(column) return QString(); }
+ virtual int columnCount() const;
+
+ void appendProperty(const QString &property);