MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / MoveTree

Method MoveTree

App/Client/Favorite/FavoriteModel.cpp:468–500  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

466}
467
468bool CFavoriteModel::MoveTree(const CFavoriteDatabase::Item &item, int newParentId)
469{
470 if(0 == item.id)
471 return false;
472
473 int parentId = item.parentId;
474 if(parentId == newParentId)
475 return true;
476
477 if(item.isFolder() && item.id == newParentId)
478 return true;
479
480 tree* parent = GetTree(parentId);
481 if(!parent) return false;
482
483 tree* newParent = GetTree(newParentId);
484 if(!newParent) return false;
485
486 auto children = parent->FindChild(item);
487 foreach(auto cur, children) {
488 int sourcePos = parent->children.indexOf(cur);
489 if(sourcePos < 0)
490 return false;
491 int desPos = newParent->GetInserIndex(cur);
492 QModelIndex index = CreateIndex(parent);
493 QModelIndex newIndex = CreateIndex(newParent);
494 beginMoveRows(index, sourcePos, sourcePos, newIndex, desPos);
495 parent->RemoveChild(cur);
496 newParent->AddChild(cur);
497 endMoveRows();
498 }
499 return true;
500}
501
502CFavoriteModel::tree::tree(): item(TreeItem::TYPE::Node)
503{}

Callers

nothing calls this directly

Calls 2

FindChildMethod · 0.80
isFolderMethod · 0.45

Tested by

no test coverage detected