+ AbstractTreeItem *parent() const;
+
+signals:
+ void dataChanged(int column = -1);
+ void newChild(AbstractTreeItem *);
+
+ void beginRemoveChilds(int firstRow, int lastRow);
+ void endRemoveChilds();
+
+private slots:
+ void childDestroyed();
+
+private:
+ QHash<int, QList<AbstractTreeItem *> > _childItems;
+ QHash<int, QHash<quint64, AbstractTreeItem *> > _childHash; // uint to be compatible to qHash functions FIXME test this
+ Qt::ItemFlags _flags;
+
+ int defaultColumn() const;
+};
+
+
+/*****************************************
+ * 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 int columnCount() const;
+
+ void appendProperty(const QString &property);
+
+private:
+ QStringList _propertyOrder;