diff options
Diffstat (limited to 'mappingtreemodel.cpp')
-rw-r--r-- | mappingtreemodel.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index b2ca982..5ab6068 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -109,6 +109,15 @@ QVariant MappingTreeModel::data(const QModelIndex &index, int role) const{ return SmTreeModel::data(index, role); } +QList<QVariant> MappingTreeModel::childList(const QVariant &value, int column) const{ + QModelIndex itemIdx = findRecursive(value, column, createIndex(0, 0, root())); + SmTreeItem *item = static_cast<SmTreeItem*>(itemIdx.internalPointer()); + if(item->childCount()){ + return getChildListRecursive(item, column); + } + return QList<QVariant>() << value; +} + QModelIndex MappingTreeModel::indexFromPath(QString &path, int column) const{ QStringList items = path.split("/"); if(items.isEmpty() || column >= NumFields){ @@ -318,7 +327,8 @@ void MappingTreeModel::populate(){ SmTreeItem *rootItem = new SmTreeItem(NumFields); SmTreeItem *firstChild = new SmTreeItem(NumFields, rootItem); firstChild->setData(Name, mappingTypeNameFromId(mType)); - firstChild->setData(Id, mType); + //no real id needed... conflicts with mapping ids! + firstChild->setData(Id, 0); rootItem->appendChild(firstChild); //collect children recursive while(mTypeParentsQ->next()){ @@ -379,6 +389,21 @@ QStringList MappingTreeModel::getPathsRecursive(SmTreeItem *parent) const{ return retval; } +QList<QVariant> MappingTreeModel::getChildListRecursive(SmTreeItem *item, int column) const{ + QList<QVariant> retval; + if(!item){ + return retval; + } + for(int i = 0; i < item->childCount(); ++i){ + if(item->child(i)->childCount()){ + retval << getChildListRecursive(item->child(i), column); + }else{ + retval << item->child(i)->data(column); + } + } + return retval; +} + QString MappingTreeModel::basePath(SmTreeItem *item) const{ QStringList pItems; SmTreeItem *cur = item; |