SignalTowerManager.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using Aitex.Core.Util;
  2. using Aitex.Sorter.Common;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.ObjectModel;
  6. using System.ComponentModel;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Xml.Linq;
  11. namespace Aitex.Sorter.UI.Config
  12. {
  13. public class SignalTowerManager : Singleton<SignalTowerManager>
  14. {
  15. public IEnumerable<SignalTowerEventItem> Load(string fileName)
  16. {
  17. if (File.Exists(fileName))
  18. {
  19. var doc = XDocument.Load(fileName);
  20. var result = doc.Root.Elements("Event").Select(x => new SignalTowerEventItem()
  21. {
  22. Name = x.Attribute("Name").Value,
  23. RedAction = (SignalTowerAction)Enum.Parse(typeof(SignalTowerAction), x.Attribute("Red").Value),
  24. BlueAction = (SignalTowerAction)Enum.Parse(typeof(SignalTowerAction), x.Attribute("Blue").Value),
  25. GreenAction = (SignalTowerAction)Enum.Parse(typeof(SignalTowerAction), x.Attribute("Green").Value),
  26. BuzzerAction = (SignalTowerAction)Enum.Parse(typeof(SignalTowerAction), x.Attribute("Red").Value),
  27. });
  28. return result;
  29. }
  30. return null;
  31. }
  32. public void Save(IEnumerable<SignalTowerEventItem> events, string fileName)
  33. {
  34. var result = events.Select(x =>
  35. new XElement("Event",
  36. new XAttribute("Name", x.Name),
  37. new XAttribute("Red", x.RedAction),
  38. new XAttribute("Blue", x.BlueAction),
  39. new XAttribute("Green", x.GreenAction),
  40. new XAttribute("Buzzer", x.BuzzerAction)
  41. ));
  42. var doc = new XDocument(new XElement("Events", result));
  43. doc.Save(fileName);
  44. }
  45. }
  46. public class SignalTowerEventItem : NotifyPropertyChangedBase
  47. {
  48. private string name;
  49. public string Name
  50. {
  51. get
  52. {
  53. return name;
  54. }
  55. set
  56. {
  57. name = value;
  58. OnPropertyChanged("Name");
  59. }
  60. }
  61. private SignalTowerAction redAction;
  62. public SignalTowerAction RedAction
  63. {
  64. get
  65. {
  66. return redAction;
  67. }
  68. set
  69. {
  70. redAction = value;
  71. OnPropertyChanged("RedAction");
  72. }
  73. }
  74. private SignalTowerAction blueAction;
  75. public SignalTowerAction BlueAction
  76. {
  77. get
  78. {
  79. return blueAction;
  80. }
  81. set
  82. {
  83. blueAction = value;
  84. OnPropertyChanged("BlueAction");
  85. }
  86. }
  87. private SignalTowerAction greenAction;
  88. public SignalTowerAction GreenAction
  89. {
  90. get
  91. {
  92. return greenAction;
  93. }
  94. set
  95. {
  96. greenAction = value;
  97. OnPropertyChanged("GreenAction");
  98. }
  99. }
  100. private SignalTowerAction buzzerAction;
  101. public SignalTowerAction BuzzerAction
  102. {
  103. get
  104. {
  105. return buzzerAction;
  106. }
  107. set
  108. {
  109. buzzerAction = value;
  110. OnPropertyChanged("BuzzerAction");
  111. }
  112. }
  113. }
  114. public enum SignalTowerAction
  115. {
  116. Off,
  117. On,
  118. Blink,
  119. }
  120. }