summaryrefslogtreecommitdiffstats
path: root/mappingtreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mappingtreemodel.cpp')
-rw-r--r--mappingtreemodel.cpp43
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;
+}