public void Save()
{
var xml = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("hotkeys"));
SaveKey(xml, "topmost", Topmost);
SaveKey(xml, "paste",Paste,false);
SaveKey(xml, "reset", Reset);
SaveKey(xml, "reset_current", ResetCurrent);
SaveKey(xml, "excel_save", ExcelSave);
SaveKey(xml, "click_throu", ClickThrou);
xml.Root.Add(new XElement("copys"));
foreach (var copy in Copy)
{
var copyElement = new XElement("copy");
var copyCtrl = (copy.Modifier & ModifierKeys.Control) != ModifierKeys.None;
var copyShift = (copy.Modifier & ModifierKeys.Shift) != ModifierKeys.None;
var copyWindow = (copy.Modifier & ModifierKeys.Win) != ModifierKeys.None;
var copyKey = copy.Key;
copyElement.Add(new XElement("ctrl", copyCtrl.ToString()));
copyElement.Add(new XElement("shift", copyShift.ToString()));
copyElement.Add(new XElement("window", copyWindow.ToString()));
copyElement.Add(new XElement("key", copyKey.ToString()));
var stringElement = new XElement("string");
stringElement.Add(new XElement("header", copy.Header));
stringElement.Add(new XElement("content", copy.Content));
stringElement.Add(new XElement("low_dps_content", copy.LowDpsContent));
stringElement.Add(new XElement("low_dps_threshold", copy.LowDpsThreshold));
stringElement.Add(new XElement("footer", copy.Footer));
stringElement.Add(new XElement("order_by", copy.OrderBy));
stringElement.Add(new XElement("order", copy.Order));
copyElement.Add(stringElement);
xml.Root.Element("copys").Add(copyElement);
}
_filestream.SetLength(0);
using (var sr = new StreamWriter(_filestream, new UTF8Encoding(true)))
{
// File writing as usual
sr.Write(xml.Declaration + Environment.NewLine + xml);
}
_filestream.Close();
}