This repository has been archived on 2022-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
bookmark-manager/SessionFileFormat.cs

93 lines
3.3 KiB
C#

using System.Xml;
using System.Windows.Forms;
namespace bzit.bomg
{
public class SessionFileFormat : RyzStudio.IO.SessionFileFormatBase
{
private MainForm parentForm = null;
public SessionFileFormat(MainForm parent_form)
{
base.CONST_PRODUCT = "bomg";
base.CONST_STREAM_FILE_NAME = "bookmarks.xml";
base.CONST_KEYPASS = "";
base.enableErrorReporting = true;
parentForm = parent_form;
}
protected override void loadFromXmlDocument(ref XmlDocument xml_doc)
{
XmlNodeList xnl = xml_doc.SelectNodes("bomg/b/g");
if (xnl.Count <= 0)
{
MessageBox.Show("No bookmarks found.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
parentForm.treeView1.Clear();
TreeNode tn = parentForm.treeView1.Nodes.Add("", xnl.Item(0).Attributes["name"].InnerText, 0, 0);
foreach (XmlNode xn in xnl.Item(0))
{
BookmarkItem bi = new BookmarkItem();
foreach (XmlNode xn2 in xn.ChildNodes)
{
switch (xn2.LocalName)
{
case "name":
bi.Fullpath = xn2.InnerText?.Trim();
break;
case "address":
bi.Address = xn2.InnerText?.Trim();
break;
case "description":
bi.Description = xn2.InnerText?.Trim();
break;
case "created":
bi.Created = xn2.InnerText?.Trim();
break;
default: break;
}
}
parentForm.treeView1.AddBookmarkItem(bi.Fullpath, bi);
}
tn.Expand();
}
protected override void saveToXmlTextWriter(ref XmlTextWriter writer)
{
if (parentForm.treeView1.Nodes.Count <= 0)
{
return;
}
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement(CONST_PRODUCT);
writer.WriteStartElement("b");
writer.WriteStartElement("g");
writer.WriteAttributeString("name", parentForm.treeView1.Nodes[0].Text);
foreach (TreeNode tn in parentForm.treeView1.NodeList)
{
BookmarkItem bi = (BookmarkItem)tn.Tag;
writer.WriteStartElement("m");
writer.WriteElementString("name", parentForm.treeView1.GetNodeFullPath(tn));
writer.WriteElementString("address", bi.Address);
writer.WriteElementString("description", bi.Description);
writer.WriteElementString("created", bi.Created.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
}