123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using CyberX8_Core;
- using MECF.Framework.Common.DataCenter;
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.Collections.ObjectModel;
- using System.Windows.Input;
- using System.Xml;
- namespace CyberX8_MainPages.ViewModels
- {
- public class SignalTowerConfigViewModel : BindableBase
- {
- #region 内部变量
- /// <summary>
- /// SignalTowerDatas
- /// </summary>
- private ObservableCollection<SignalTowerItem> _signalTowerDatas = new ObservableCollection<SignalTowerItem>();
- /// <summary>
- /// SignalTower XML file
- /// </summary>
- private XmlDocument _xmlSignalTower;
- #endregion
- #region 属性
- /// <summary>
- /// SignalTowerDatas
- /// </summary>
- public ObservableCollection<SignalTowerItem> SignalTowerDatas
- {
- get { return _signalTowerDatas; }
- set
- {
- SetProperty(ref _signalTowerDatas, value);
- }
- }
- #endregion
- #region 命令
- /// <summary>
- /// Save Command
- /// </summary>
- public ICommand SaveConfigCommand { get; set; }
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- public SignalTowerConfigViewModel()
- {
- SaveConfigCommand = new DelegateCommand<object>(OnSaveConfig);
- _xmlSignalTower = new XmlDocument();
- string contentSignal = QueryDataClient.Instance.Service.GetTypedConfigContent("SignalTower", "");
- _xmlSignalTower.LoadXml(contentSignal);
- var items = _xmlSignalTower.SelectNodes($"STEvents/STEvent");
- foreach (var item in items)
- {
- XmlElement element = item as XmlElement;
- SignalTowerItem stItem = new SignalTowerItem();
- stItem.Name = element.GetAttribute("name");
- stItem.IsRed = string.Compare(element.GetAttribute("Red"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsRedBlinking = string.Compare(element.GetAttribute("Red"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsYellow = string.Compare(element.GetAttribute("Yellow"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsYellowBlinking = string.Compare(element.GetAttribute("Yellow"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsGreen = string.Compare(element.GetAttribute("Green"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsGreenBlinking = string.Compare(element.GetAttribute("Green"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsBlue = string.Compare(element.GetAttribute("Blue"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsBlueBlinking = string.Compare(element.GetAttribute("Blue"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsBuzzer = string.Compare(element.GetAttribute("Buzzer"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;
- stItem.IsBuzzerBlinking = string.Compare(element.GetAttribute("Buzzer"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;
- SignalTowerDatas.Add(stItem);
- }
- }
- /// <summary>
- /// 加载数据
- /// </summary>
- public void LoadData(string systemName)
- {
- }
- /// <summary>
- /// 隐藏
- /// </summary>
- public void Hide()
- {
- }
- #region 指令Action
- /// <summary>
- /// 保存设置
- /// </summary>
- /// <param name="param"></param>
- private void OnSaveConfig(object param)
- {
- var nodeGroup = _xmlSignalTower.SelectSingleNode($"STEvents");
- var nodeItem = _xmlSignalTower.SelectNodes($"STEvents/STEvent");
- foreach (var nodeGroupChildNode in nodeItem)
- {
- var node = nodeGroupChildNode as XmlElement;
- nodeGroup.RemoveChild(node);
- }
- foreach (var item in SignalTowerDatas)
- {
- var node = _xmlSignalTower.CreateElement("STEvent");
- node.SetAttribute("name", item.Name);
- node.SetAttribute("Red", item.IsRed ? "on" : item.IsRedBlinking ? "blinking" : "off");
- node.SetAttribute("Yellow", item.IsYellow ? "on" : item.IsYellowBlinking ? "blinking" : "off");
- node.SetAttribute("Blue", item.IsBlue ? "on" : item.IsBlueBlinking ? "blinking" : "off");
- node.SetAttribute("Green", item.IsGreen ? "on" : item.IsGreenBlinking ? "blinking" : "off");
- node.SetAttribute("Buzzer", item.IsBuzzer ? "on" : item.IsBuzzerBlinking ? "blinking" : "off");
- nodeGroup.AppendChild(node);
- }
- QueryDataClient.Instance.Service.SetTypedConfigContent("SignalTower", "", _xmlSignalTower.InnerXml);
- }
- #endregion
- }
- }
|