public static void Reflect(TagManager dest, TagTreeViewItemModelManager source) { foreach (var deletedTag in source.DeletedTags) { dest.Remove(deletedTag.Id); } dest.ReconnectAllToBaseTag(); foreach (var tag in source.AddedTags) { var addNewTag = new TagModel(tag.Id) { Name = tag.Name }; dest.Add(addNewTag); dest.ConnectTags(dest.GetBaseTag(), addNewTag); } foreach (var tag in dest.TagDictionary.Values) { if (tag.IsBase()) { continue; } var sourceTag = source.TagDictionary[tag.Id]; var parent = dest.TagDictionary[sourceTag.Parent.Id]; dest.DisconnectFromParent(tag); dest.ConnectTags(parent, tag); tag.Name = sourceTag.Name; } }
public static TagTreeViewItemModelManager Convert(TagManager source) { TagTreeViewItemModelManager result = new TagTreeViewItemModelManager(); var baseTag = source.GetBaseTag(); var addBaseTag = ConvertTagToTagTreeViewItemModel.ConvertBaseTag(baseTag); result.Add(addBaseTag); ExpandChild(addBaseTag, baseTag, ref result); return(result); }