AlarmControl.xaml.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. using ivf_tl_Entity;
  2. using ivf_tl_Entity.GlobalEnums;
  3. using ivf_tl_Operate.Converts;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Security.Claims;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using System.Windows.Controls;
  12. using System.Windows.Data;
  13. using System.Windows.Documents;
  14. using System.Windows.Input;
  15. using System.Windows.Media;
  16. using System.Windows.Media.Imaging;
  17. using System.Windows.Navigation;
  18. using System.Windows.Shapes;
  19. namespace ivf_tl_Operate.CustomUserControls
  20. {
  21. /// <summary>
  22. /// AlarmControl.xaml 的交互逻辑
  23. /// </summary>
  24. public partial class AlarmControl : UserControl
  25. {
  26. public AlarmControl()
  27. {
  28. InitializeComponent();
  29. }
  30. public AlarmHistoryEntity Data
  31. {
  32. get { return (AlarmHistoryEntity)GetValue(DataProperty); }
  33. set { SetValue(DataProperty, value); }
  34. }
  35. // Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc...
  36. public static readonly DependencyProperty DataProperty =
  37. DependencyProperty.Register("Data", typeof(AlarmHistoryEntity), typeof(AlarmControl), new PropertyMetadata(null,new PropertyChangedCallback (OnDataPropertyChangedCallback)));
  38. private static void OnDataPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
  39. {
  40. if (!(d is AlarmControl source)) return;
  41. if (!(e.NewValue is AlarmHistoryEntity alarm)) return;
  42. //source._alarmState.Text = alarm.type==1 ? "结束报警" : "正在报警";
  43. source._alarmState.Text = alarm.type == 1 ? KeyToStringConvert.GetLanguageStringByKey("C0278") : KeyToStringConvert.GetLanguageStringByKey("C0277");
  44. string houseSnString = null;
  45. if(alarm.houseSn == 0)
  46. {
  47. houseSnString = KeyToStringConvert.GetLanguageStringByKey("C0230");
  48. }
  49. else if (alarm.houseSn == 11)
  50. {
  51. houseSnString = KeyToStringConvert.GetLanguageStringByKey("C0231");
  52. }
  53. else
  54. {
  55. houseSnString = $"{alarm.houseSn}{KeyToStringConvert.GetLanguageStringByKey("C0056")}";
  56. }
  57. source._house.Text = houseSnString;
  58. source._alarmTitle.Text = alarm.title;
  59. source._alarmText.Text = alarm.text;//alarm.textDetail.Substring(alarm.textDetail.IndexOf(',')+1);
  60. source._alarmStartTime.Text = alarm.startTime;
  61. source._alarmEndTime.Text = alarm.endTime;
  62. //source._svg.Fill = new SolidColorBrush(Color.FromRgb(199, 80, 105));
  63. //source._svg.Stretch = Stretch.Fill;
  64. //报警结束的颜色为灰色
  65. if (alarm.type == 1)
  66. {
  67. if (DateTime.TryParse(alarm.startTime, out DateTime startTime) && DateTime.TryParse(alarm.endTime, out DateTime endTime))
  68. {
  69. var alarmSpan = endTime.Subtract(startTime);
  70. source._alarmAllTime.Visibility = Visibility.Visible;
  71. //source._alarmAllTime.Text = $"总计:{(alarmSpan.Days * 24) + alarmSpan.Hours}H{alarmSpan.Minutes}M";
  72. source._alarmAllTime.Text = $"{KeyToStringConvert.GetLanguageStringByKey("C0279")}:{(alarmSpan.Days * 24) + alarmSpan.Hours}H{alarmSpan.Minutes}M";
  73. }
  74. source._imageMute.Visibility = Visibility.Hidden;
  75. source._borderLeft.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185)); //灰色
  76. source._alarmStateBorder.Background = new SolidColorBrush(Colors.Transparent);
  77. source._alarmStateBorder.BorderThickness = new Thickness(1);
  78. source._alarmStateBorder.BorderBrush = new SolidColorBrush(Color.FromRgb(176, 180, 185)); //灰色
  79. source._alarmState.Foreground = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色
  80. source._alarmCircle1.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色
  81. source._alarmCircle2.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色
  82. switch (alarm.alarmKey)
  83. {
  84. case "PRESSURE_ALARM":
  85. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarmEnd.png", UriKind.RelativeOrAbsolute));
  86. break;
  87. case "DISK_SPACE_ALARM":
  88. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/StorageAlarmEnd.png", UriKind.RelativeOrAbsolute));
  89. break;
  90. case "TEMPERATURE_ALARM":
  91. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/TemperatureAlarmEnd.png", UriKind.RelativeOrAbsolute));
  92. break;
  93. case "TL_STATE_ALARM":
  94. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarmEnd.png", UriKind.RelativeOrAbsolute));
  95. break;
  96. case "HOUSE_STATE_ALARM":
  97. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarmEnd.png", UriKind.RelativeOrAbsolute));
  98. break;
  99. case "HOUSE_PORT_ALARM":
  100. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ComlossAlarmEnd.png", UriKind.RelativeOrAbsolute));
  101. break;
  102. case "DISK_EXIST_ALARM":
  103. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/HardwareLostAlarmEnd.png", UriKind.RelativeOrAbsolute));
  104. break;
  105. case "HOUSE_DOOR_ALARM":
  106. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/DoorErrorAlarmEnd.png", UriKind.RelativeOrAbsolute));
  107. break;
  108. case "MATTING_ALARM":
  109. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarmEnd.png", UriKind.RelativeOrAbsolute));
  110. break;
  111. case "PHOTO_STATE_ALARM":
  112. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarmEnd.png", UriKind.RelativeOrAbsolute));
  113. break;
  114. case "AIR_SWAP_ALARM":
  115. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarmEnd.png", UriKind.RelativeOrAbsolute));
  116. break;
  117. default: break;
  118. }
  119. }
  120. else
  121. {
  122. switch (alarm.alarmKey)
  123. {
  124. case "PRESSURE_ALARM":
  125. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarming.png", UriKind.RelativeOrAbsolute));
  126. break;
  127. case "AIR_SWAP_ALARM":
  128. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarming.png", UriKind.RelativeOrAbsolute));
  129. break;
  130. case "DISK_SPACE_ALARM":
  131. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/StorageAlarming.png", UriKind.RelativeOrAbsolute));
  132. break;
  133. case "TEMPERATURE_ALARM":
  134. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/TemperatureAlarming.png", UriKind.RelativeOrAbsolute));
  135. break;
  136. case "TL_STATE_ALARM":
  137. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarming.png", UriKind.RelativeOrAbsolute));
  138. break;
  139. case "HOUSE_STATE_ALARM":
  140. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarming.png", UriKind.RelativeOrAbsolute));
  141. break;
  142. case "HOUSE_PORT_ALARM":
  143. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ComlossAlarming.png", UriKind.RelativeOrAbsolute));
  144. break;
  145. case "DISK_EXIST_ALARM":
  146. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/HardwareLostAlarming.png", UriKind.RelativeOrAbsolute));
  147. break;
  148. case "HOUSE_DOOR_ALARM":
  149. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/DoorErrorAlarming.png", UriKind.RelativeOrAbsolute));
  150. break;
  151. case "MATTING_ALARM":
  152. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarming.png", UriKind.RelativeOrAbsolute));
  153. break;
  154. case "PHOTO_STATE_ALARM":
  155. source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarming.png", UriKind.RelativeOrAbsolute));
  156. break;
  157. default: break;
  158. }
  159. if (alarm.mute == 1) source._imageMute.Source = source.voiceCloseImage;
  160. }
  161. }
  162. //public event Action<Alarm> OnMute;
  163. private ImageSource voiceCloseImage = Application.Current.Resources["VoiceCloseImage"] as ImageSource;
  164. private ImageSource voiceOpenImage = Application.Current.Resources["VoiceOpenImage"] as ImageSource;
  165. private void Image_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
  166. {
  167. if (!(sender is Image image)) return;
  168. if (Data.mute==0)
  169. {
  170. Data.mute = 1;
  171. AppData.Instance.MainPageView.SetAlarmMute(Data.id, Data.mute);
  172. image.Source = voiceCloseImage;
  173. }
  174. else
  175. {
  176. Data.mute = 0;
  177. image.Source = voiceOpenImage;
  178. AppData.Instance.MainPageView.SetAlarmMute(Data.id, Data.mute);
  179. }
  180. //if (this.Data.IsMute.Value)
  181. //{
  182. // //开启声音
  183. // this.Data.IsMute = false;
  184. // image.Source = voiceOpenImage;
  185. //}
  186. //else
  187. //{
  188. // //关闭声音
  189. // this.Data.IsMute = true;
  190. // image.Source = voiceCloseImage;
  191. //}
  192. //OnMute?.Invoke(this.Data);
  193. }
  194. }
  195. }