+int AbstractTreeItem::column() const {
+ if(!parent())
+ return -1;
+
+ QHash<int, QList<AbstractTreeItem*> >::const_iterator iter = parent()->_childItems.constBegin();
+ while(iter != parent()->_childItems.constEnd()) {
+ if(iter->contains(const_cast<AbstractTreeItem *>(this)))
+ return iter.key();
+ iter++;
+ }
+
+ qWarning() << "AbstractTreeItem::column(): unable to determine the Column of" << this;
+ return parent()->defaultColumn();
+}
+
+int AbstractTreeItem::row() const {
+ if(!parent())
+ return -1;
+ else
+ return parent()->_childItems[column()].indexOf(const_cast<AbstractTreeItem *>(this));
+}
+
+AbstractTreeItem *AbstractTreeItem::parent() const {
+ return qobject_cast<AbstractTreeItem *>(QObject::parent());
+}
+
+Qt::ItemFlags AbstractTreeItem::flags() const {
+ return _flags;
+}
+
+void AbstractTreeItem::setFlags(Qt::ItemFlags flags) {
+ _flags = flags;
+}
+
+void AbstractTreeItem::dumpChildList() {
+ AbstractTreeItem *child;
+
+ qDebug() << "==== Childlist for Item:" << this << id() << "====";
+ QHash<int, QList<AbstractTreeItem *> >::iterator columnIter = _childItems.begin();
+ while(columnIter != _childItems.end()) {
+ if(columnIter->count() > 0) {
+ QList<AbstractTreeItem *>::const_iterator childIter = columnIter->constBegin();
+ while(childIter != columnIter->constEnd()) {
+ child = *childIter;
+ qDebug() << "Column:" << columnIter.key() << "Row:" << child->row() << child << child->id() << child->data(0, Qt::DisplayRole);
+ childIter++;
+ }
+ }
+ columnIter++;
+ }
+ qDebug() << "==== End Of Childlist ====";
+}
+
+/*****************************************
+ * SimpleTreeItem
+ *****************************************/
+SimpleTreeItem::SimpleTreeItem(const QList<QVariant> &data, AbstractTreeItem *parent)
+ : AbstractTreeItem(parent),
+ _itemData(data)
+{