* moved \c sourceChildFolderToMove from its parent folder to \c targetParentFolder * keeping (not overwriting) the sub-folder structure. */
| 131 | * keeping (not overwriting) the sub-folder structure. |
| 132 | */ |
| 133 | void ProjectParser::moveFolder(Folder* targetParentFolder, Folder* sourceChildFolderToMove) const { |
| 134 | auto* targetChildFolder = targetParentFolder->child<Folder>(sourceChildFolderToMove->name()); |
| 135 | if (targetChildFolder) { |
| 136 | // folder exists already in the target parent folder, |
| 137 | //-> recursively move its children from source into target parent folder |
| 138 | for (auto* child : sourceChildFolderToMove->children<AbstractAspect>()) { |
| 139 | auto* folder = dynamic_cast<Folder*>(child); |
| 140 | if (folder) { |
| 141 | moveFolder(targetChildFolder, folder); |
| 142 | } else if (child) { |
| 143 | sourceChildFolderToMove->removeChild(child); |
| 144 | |
| 145 | // remove the object to be imported in the target folder if it's already existing |
| 146 | auto* targetChild = targetChildFolder->child<AbstractAspect>(child->name()); |
| 147 | if (targetChild) |
| 148 | targetChildFolder->removeChild(targetChild); |
| 149 | |
| 150 | targetChildFolder->addChild(child); |
| 151 | } |
| 152 | } |
| 153 | } else { |
| 154 | // folder doesn't exist yet in the target parent folder -> simply move it |
| 155 | auto* sourceParentFolder = dynamic_cast<Folder*>(sourceChildFolderToMove->parentAspect()); |
| 156 | if (sourceParentFolder) |
| 157 | sourceParentFolder->removeChild(sourceChildFolderToMove); |
| 158 | targetParentFolder->addChild(sourceChildFolderToMove); |
| 159 | } |
| 160 | } |
nothing calls this directly
no test coverage detected