diff options
Diffstat (limited to 'mappingtreemodel.cpp')
-rw-r--r-- | mappingtreemodel.cpp | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index d64cb52..a79661e 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -202,6 +202,14 @@ bool MappingTreeModel::deleteChild(const QModelIndex &idx){ return false; } +int MappingTreeModel::childCount(const QModelIndex &idx) const{ + if(!idx.isValid()){ + return 0; + } + SmTreeItem *item = itemAt(idx); + return item->childCount(); +} + void MappingTreeModel::populate(){ if(mType == -1){ return; @@ -273,11 +281,15 @@ Qt::ItemFlags MappingTreeResultModel::flags(const QModelIndex &index) const { } bool MappingTreeResultModel::setData(const QModelIndex &index, const QVariant &value, int role){ + SmTreeItem *item = itemAt(index); if(role == NameRole){ - SmTreeItem *item = itemAt(index); item->setData(Name, value); return true; } + if(role == IdRole){ + item->setData(Id, value); + return true; + } return SmTreeModel::setData(index, value, role); } @@ -291,13 +303,17 @@ void MappingTreeResultModel::addItem(const MappingData &data){ continue; }else{ //insert child - QModelIndex curIdx = insertChild(data.path.at(i), curItem); + int id = -1; + if(i == data.path.count() - 1){ + id = data.id; + } + QModelIndex curIdx = insertChild(data.path.at(i), id, curItem); curItem = itemAt(curIdx); } } } -QModelIndex MappingTreeResultModel::insertChild(const QVariant &data, SmTreeItem *parent){ +QModelIndex MappingTreeResultModel::insertChild(const QVariant &data, int id, SmTreeItem *parent){ QModelIndex parentIdx; int row = parent->childCount(); if(parent != root()){ @@ -311,9 +327,14 @@ QModelIndex MappingTreeResultModel::insertChild(const QVariant &data, SmTreeItem insertRows(row, 1, parentIdx); QModelIndex newIdx = index(row, 0, parentIdx); setData(newIdx, data, NameRole); + setData(newIdx, id, IdRole); return newIdx; } +QList<int> MappingTreeResultModel::mappingsIds() const { + return mappingIdsRecursive(root()); +} + int MappingTreeResultModel::hasChild(SmTreeItem *item, const QVariant &name, int column) const{ for(int i = 0; i < item->childCount(); ++i){ if(item->child(i)->data(column) == name){ @@ -322,3 +343,19 @@ int MappingTreeResultModel::hasChild(SmTreeItem *item, const QVariant &name, int } return -1; } + +QList<int> MappingTreeResultModel::mappingIdsRecursive(SmTreeItem *parent) const { + QList<int> retval; + if(!parent->childCount()){ + return retval; + } + for(int i = 0; i < parent->childCount(); ++i){ + SmTreeItem *child = parent->child(i); + int id = child->data(Id).toInt(); + if(id != -1){ + retval << id; + } + retval << mappingIdsRecursive(child); + } + return retval; +} |