| 655 | } |
| 656 | |
| 657 | void QmitkDataStorageTreeModel::RemoveNodeInternal(const mitk::DataNode *node) |
| 658 | { |
| 659 | if (!m_Root) |
| 660 | return; |
| 661 | |
| 662 | TreeItem *treeItem = m_Root->Find(node); |
| 663 | if (!treeItem) |
| 664 | return; // return because there is no treeitem containing this node |
| 665 | |
| 666 | TreeItem *parentTreeItem = treeItem->GetParent(); |
| 667 | QModelIndex parentIndex = this->IndexFromTreeItem(parentTreeItem); |
| 668 | |
| 669 | // emit beginRemoveRows event (QModelIndex is empty because we dont have a tree model) |
| 670 | this->beginRemoveRows(parentIndex, treeItem->GetIndex(), treeItem->GetIndex()); |
| 671 | |
| 672 | // remove node |
| 673 | std::vector<TreeItem*> children = treeItem->GetChildren(); |
| 674 | delete treeItem; |
| 675 | |
| 676 | // emit endRemoveRows event |
| 677 | endRemoveRows(); |
| 678 | |
| 679 | // move all children of deleted node into its parent |
| 680 | for (std::vector<TreeItem*>::iterator it = children.begin(); it != children.end(); it++) |
| 681 | { |
| 682 | // emit beginInsertRows event |
| 683 | beginInsertRows(parentIndex, parentTreeItem->GetChildCount(), parentTreeItem->GetChildCount()); |
| 684 | |
| 685 | // add nodes again |
| 686 | parentTreeItem->AddChild(*it); |
| 687 | |
| 688 | // emit endInsertRows event |
| 689 | endInsertRows(); |
| 690 | } |
| 691 | |
| 692 | this->AdjustLayerProperty(); |
| 693 | } |
| 694 | |
| 695 | void QmitkDataStorageTreeModel::RemoveNode(const mitk::DataNode *node) |
| 696 | { |
no test coverage detected