diff --git a/AIStudio.Wpf.Mind/Models/MindNodeDesignerItem.cs b/AIStudio.Wpf.Mind/Models/MindNodeDesignerItem.cs index 64dc0d9..7df56c7 100644 --- a/AIStudio.Wpf.Mind/Models/MindNodeDesignerItem.cs +++ b/AIStudio.Wpf.Mind/Models/MindNodeDesignerItem.cs @@ -1,4 +1,6 @@ -using System.Windows; +using System; +using System.Collections.Generic; +using System.Windows; using System.Xml.Serialization; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.Mind.ViewModels; @@ -6,6 +8,8 @@ using Newtonsoft.Json; namespace AIStudio.Wpf.Mind.Models { + [Serializable] + [XmlInclude(typeof(MindNodeDesignerItem))] public class MindNodeDesignerItem : DesignerItemBase { public MindNodeDesignerItem() @@ -17,6 +21,15 @@ namespace AIStudio.Wpf.Mind.Models Spacing = item.Spacing; Offset = item.Offset; IsExpanded = item.IsExpanded; + LinkInfoItem = new LinkInfoItem(item.LinkInfo); + ImageInfoItem = new ImageInfoItem(item.ImageInfo); + Remark = item.Remark; + Priority= item.Priority; + Rate=item.Rate; + if (item.Tags != null) + { + Tags = new List(item.Tags); + } } [XmlIgnore] @@ -65,5 +78,92 @@ namespace AIStudio.Wpf.Mind.Models { get; set; } + + [XmlElement] + public LinkInfoItem LinkInfoItem + { + get;set; + } + + [XmlElement] + public ImageInfoItem ImageInfoItem + { + get; set; + } + + public string Remark + { + get; set; + } + + public double? Priority + { + get; set; + } + + public double? Rate + { + get; set; + } + + [XmlArray] + public List Tags + { + get; set; + } + } + + [Serializable] + [XmlInclude(typeof(LinkInfoItem))] + public class LinkInfoItem + { + public LinkInfoItem() + { + + } + + public LinkInfoItem(LinkInfo linkinfo) + { + Link = linkinfo.Link; + Text = linkinfo.Text; + } + + [XmlAttribute] + public string Link + { + get;set; + } + + [XmlAttribute] + public string Text + { + get; set; + } + } + + [Serializable] + [XmlInclude(typeof(ImageInfoItem))] + public class ImageInfoItem + { + public ImageInfoItem() + { + + } + + public ImageInfoItem(ImageInfo imageInfo) + { + Url = imageInfo.Url; + Text = imageInfo.Text; + } + + public string Url + { + get; set; + } + + public string Text + { + get; set; + } } } diff --git a/AIStudio.Wpf.Mind/Models/MindNodeModel.cs b/AIStudio.Wpf.Mind/Models/MindNodeModel.cs index 1539e3c..cd4f3e0 100644 --- a/AIStudio.Wpf.Mind/Models/MindNodeModel.cs +++ b/AIStudio.Wpf.Mind/Models/MindNodeModel.cs @@ -1,5 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Windows; +using System.Xml.Serialization; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramModels; using AIStudio.Wpf.DiagramModels.ViewModels; @@ -27,17 +29,108 @@ namespace AIStudio.Wpf.Flowchart.Models get; set; } + [XmlElement] + public LinkInfoModel LinkInfoModel + { + get; set; + } + + [XmlElement] + public ImageInfoModel ImageInfoModel + { + get; set; + } + + public string Remark + { + get; set; + } + + public double? Priority + { + get; set; + } + + public double? Rate + { + get; set; + } + + [XmlArray] + public List Tags + { + get; set; + } + public override DiagramItemViewModel ToNodel(IDiagramViewModel diagramViewModel) { MindNode mindNode = new MindNode(diagramViewModel); mindNode.Spacing = Spacing; mindNode.Offset = Offset; - mindNode.IsExpanded = IsExpanded; + mindNode.IsExpanded = IsExpanded; + mindNode.LinkInfo = new LinkInfo(){Link = LinkInfoModel?.Link, Text= LinkInfoModel?.Text}; + mindNode.ImageInfo = new ImageInfo() { Url= ImageInfoModel?.Url, Text= ImageInfoModel?.Text }; + mindNode.Remark = Remark; + mindNode.Priority = Priority; + mindNode.Rate = Rate; + if (Tags != null) + { + mindNode.Tags = new System.Collections.ObjectModel.ObservableCollection(Tags); + } + mindNode.InitLayout(false); return mindNode; } } + + public class LinkInfoModel + { + public LinkInfoModel() + { + + } + + public LinkInfoModel(LinkInfo linkinfo) + { + Link = linkinfo.Link; + Text = linkinfo.Text; + } + + public string Link + { + get; set; + } + + public string Text + { + get; set; + } + } + + public class ImageInfoModel + { + public ImageInfoModel() + { + + } + + public ImageInfoModel(ImageInfo imageInfo) + { + Url = imageInfo.Url; + Text = imageInfo.Text; + } + + public string Url + { + get; set; + } + + public string Text + { + get; set; + } + } } diff --git a/AIStudio.Wpf.Mind/ViewModels/MindNode.cs b/AIStudio.Wpf.Mind/ViewModels/MindNode.cs index 8f3f3bd..0bf44e9 100644 --- a/AIStudio.Wpf.Mind/ViewModels/MindNode.cs +++ b/AIStudio.Wpf.Mind/ViewModels/MindNode.cs @@ -78,7 +78,6 @@ namespace AIStudio.Wpf.Mind.ViewModels IsInnerConnector = true; MindLayout.Appearance(this, MindThemeModel, initAppearance); - var xx = GlobalType.AllTypes; this.PropertyChanged -= this.Item_PropertyChanged; this.PropertyChanged += this.Item_PropertyChanged; } @@ -97,6 +96,15 @@ namespace AIStudio.Wpf.Mind.ViewModels Spacing = designer.Spacing; Offset = designer.Offset; IsExpanded = designer.IsExpanded; + LinkInfo = new LinkInfo() { Link = designer.LinkInfoItem?.Link, Text = designer.LinkInfoItem?.Text }; + ImageInfo = new ImageInfo() { Url = designer.ImageInfoItem?.Url, Text = designer.ImageInfoItem?.Text }; + Remark = designer.Remark; + Priority = designer.Priority; + Rate = designer.Rate; + if (designer.Tags != null) + { + Tags = new ObservableCollection(designer.Tags); + } } } @@ -107,6 +115,15 @@ namespace AIStudio.Wpf.Mind.ViewModels mindNodeModel.Spacing = Spacing; mindNodeModel.Offset = Offset; mindNodeModel.IsExpanded = IsExpanded; + mindNodeModel.LinkInfoModel = new LinkInfoModel(LinkInfo); + mindNodeModel.ImageInfoModel = new ImageInfoModel(ImageInfo); + mindNodeModel.Remark = Remark; + mindNodeModel.Priority = Priority; + mindNodeModel.Rate = Rate; + if (Tags != null) + { + mindNodeModel.Tags = new List(Tags); + } return mindNodeModel; }