void Project::save_item(DomElement dom_parent, ProjectItem *item) { DomElement dom_item; if (dynamic_cast<ProjectFolderItem*>(item)) { ProjectFolderItem *folder_item = dynamic_cast<ProjectFolderItem*>(item); dom_item = dom_parent.get_owner_document().create_element("folder"); dom_item.set_child_string("path", folder_item->path); } else if (dynamic_cast<ProjectFilterItem*>(item)) { ProjectFilterItem *filter_item = dynamic_cast<ProjectFilterItem*>(item); dom_item = dom_parent.get_owner_document().create_element("filter"); dom_item.set_child_string("name", filter_item->name); } else if (dynamic_cast<ProjectFileItem*>(item)) { ProjectFileItem *file_item = dynamic_cast<ProjectFileItem*>(item); dom_item = dom_parent.get_owner_document().create_element("file"); dom_item.set_child_string("filename", file_item->filename); } else { throw Exception("Unknown item type"); } save_item_children(dom_item, item); dom_parent.append_child(dom_item); }
void Project::save_item_children(DomElement dom_parent, ProjectItem *item) { if (!item->children().empty()) { DomElement dom_items = dom_parent.get_owner_document().create_element("items"); for (size_t i = 0; i < item->children().size(); i++) { save_item(dom_items, item->children()[i]); } dom_parent.append_child(dom_items); } }