public static SuoDataJson Serialize(ToolWindowViewModel vm) { if (vm == null) { throw new ArgumentNullException(nameof(vm)); } var data = new SuoDataJson(); data.ShowAllProjects = vm.TreeViewModel.ShowAllProjects; data.CheckedArguments = new HashSet <Guid>(vm.TreeViewModel.AllProjects.SelectMany(p => p.CheckedArguments).Select(arg => arg.Id)); data.ExpandedContainer = new HashSet <Guid>(vm.TreeViewModel.AllItems.OfType <CmdContainer>().Where(con => con.IsExpanded).Select(p => p.Id)); data.SelectedItems = new HashSet <Guid>(vm.TreeViewModel.Projects.Values.SelectMany(p => p.SelectedItems).Select(item => item.Id) .Concat(vm.TreeViewModel.Projects.Values.Where(p => p.IsSelected).Select(p => p.Id))); foreach (var kvPair in vm.TreeViewModel.Projects) { var list = new ProjectDataJsonVersioned { Id = kvPair.Value.Id, ExclusiveMode = kvPair.Value.ExclusiveMode, Delimiter = kvPair.Value.Delimiter, Items = TransformCmdList(kvPair.Value.Items), // not in JSON Expanded = kvPair.Value.IsExpanded, Selected = kvPair.Value.IsSelected, }; data.ProjectArguments.Add(kvPair.Key, list); } return(data); }
private static SuoDataJson ParseOldJsonFormat(JObject obj, VisualStudioHelper vsHelper) { var result = new SuoDataJson(); foreach (var prop in obj.Properties()) { var projectState = ProjectDataSerializer.ParseOldJsonFormat(prop.Value); var projectName = prop.Name; var projectGuid = vsHelper.ProjectGuidForProjetName(projectName); var enabledItems = from item in projectState.Items where item.Enabled select item.Id; result.ProjectArguments.Add(projectGuid, projectState); result.CheckedArguments.AddRange(enabledItems); } return(result); }