SystemConfigViewModel.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MECF.Framework.Common.OperationCenter;
  7. using Prism.Commands;
  8. using Prism.Mvvm;
  9. using Venus_MainPages.Unity;
  10. //using Venus_MainPages.Unity.SystemConfig;
  11. namespace Venus_MainPages.ViewModels
  12. {
  13. public class SystemConfigViewModel:BindableBase
  14. {
  15. #region 私有字段
  16. private List<ConfigNode> _ConfigNodes = new List<ConfigNode>();
  17. private List<ConfigItem> _configItems = null;
  18. string _CurrentNodeName = string.Empty;
  19. #endregion
  20. #region 属性
  21. public List<ConfigNode> ConfigNodes
  22. {
  23. get { return _ConfigNodes; }
  24. set { _ConfigNodes = value; RaisePropertyChanged("ConfigNodes"); }
  25. }
  26. public List<ConfigItem> ConfigItems
  27. {
  28. get { return _configItems; }
  29. set { _configItems = value; RaisePropertyChanged("ConfigItems"); }
  30. }
  31. #region 命令
  32. private DelegateCommand<object> _TreeViewSelectedItemChangedCmd;
  33. public DelegateCommand<object> TreeViewSelectedItemChangedCmd =>
  34. _TreeViewSelectedItemChangedCmd ?? (_TreeViewSelectedItemChangedCmd = new DelegateCommand<object>(TreeViewSelectedItemChanged));
  35. #endregion
  36. #endregion
  37. #region 命令
  38. private DelegateCommand<object> _SetValueCommand;
  39. public DelegateCommand<object> SetValueCommand =>
  40. _SetValueCommand ?? (_SetValueCommand = new DelegateCommand<object>(SetValue));
  41. #endregion
  42. public SystemConfigViewModel()
  43. {
  44. ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;
  45. }
  46. //protected override void OnInitialize()
  47. //{
  48. // base.OnInitialize();
  49. // ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;
  50. //}
  51. private void TreeViewSelectedItemChanged(object node)
  52. {
  53. var node2 = (ConfigNode)node;
  54. _CurrentNodeName = string.IsNullOrEmpty(node2.Path) ? node2.Name : $"{node2.Path}.{node2.Name}";
  55. ConfigItems = node2.Items;
  56. GetDataOfConfigItems();
  57. }
  58. private void GetDataOfConfigItems()
  59. {
  60. if (ConfigItems == null)
  61. return;
  62. for (int i = 0; i < ConfigItems.Count; i++)
  63. {
  64. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", ConfigItems[i].Name);
  65. ConfigItems[i].CurrentValue = SystemConfigProvider.Instance.GetValueByName(key);
  66. if (ConfigItems[i].Type == DataType.Bool)
  67. {
  68. bool value;
  69. if (bool.TryParse(ConfigItems[i].CurrentValue, out value))
  70. ConfigItems[i].BoolValue = value;
  71. }
  72. else
  73. ConfigItems[i].StringValue = ConfigItems[i].CurrentValue;
  74. }
  75. }
  76. private void SetValue(Object myitem)
  77. {
  78. //key :System.IsSimulatorMode
  79. //value: true or false 都是字符串
  80. //input check
  81. var item = (ConfigItem)myitem;
  82. string value;
  83. if (item.Type == DataType.Bool)
  84. {
  85. value = item.BoolValue.ToString().ToLower();
  86. }
  87. else
  88. {
  89. if (item.TextSaved)
  90. return;
  91. if (item.Type == DataType.Int)
  92. {
  93. int iValue;
  94. if (int.TryParse(item.StringValue, out iValue))
  95. {
  96. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  97. {
  98. if (iValue > item.Max || iValue < item.Min)
  99. {
  100. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", ((int)item.Min).ToString(), ((int)item.Max).ToString()));
  101. return;
  102. }
  103. }
  104. }
  105. else
  106. {
  107. //DialogBox.ShowWarning("Please input valid data.");
  108. return;
  109. }
  110. value = item.StringValue;
  111. }
  112. else if (item.Type == DataType.Double)
  113. {
  114. double fValue;
  115. if (double.TryParse(item.StringValue, out fValue))
  116. {
  117. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  118. {
  119. if (fValue > item.Max || fValue < item.Min)
  120. {
  121. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", item.Min.ToString(), item.Max.ToString()));
  122. return;
  123. }
  124. }
  125. }
  126. else
  127. {
  128. //DialogBox.ShowWarning("Please input valid data.");
  129. return;
  130. }
  131. value = item.StringValue;
  132. }
  133. else
  134. value = item.StringValue;
  135. }
  136. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", item.Name);
  137. InvokeClient.Instance.Service.DoOperation("System.SetConfig", key, value);
  138. item.TextSaved = true;
  139. Reload();
  140. }
  141. public void Reload()
  142. {
  143. GetDataOfConfigItems();
  144. }
  145. public void SaveAll()
  146. {
  147. if (ConfigItems == null)
  148. return;
  149. ConfigItems.ForEach(item => SetValue(item));
  150. }
  151. }
  152. }