using ivf_tl_Entity; using ivf_tl_Entity.GlobalEnums; using ivf_tl_Operate.Converts; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace ivf_tl_Operate.CustomUserControls { /// /// AlarmControl.xaml 的交互逻辑 /// public partial class AlarmControl : UserControl { public AlarmControl() { InitializeComponent(); } public AlarmHistoryEntity Data { get { return (AlarmHistoryEntity)GetValue(DataProperty); } set { SetValue(DataProperty, value); } } // Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc... public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(AlarmHistoryEntity), typeof(AlarmControl), new PropertyMetadata(null,new PropertyChangedCallback (OnDataPropertyChangedCallback))); private static void OnDataPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (!(d is AlarmControl source)) return; if (!(e.NewValue is AlarmHistoryEntity alarm)) return; //source._alarmState.Text = alarm.type==1 ? "结束报警" : "正在报警"; source._alarmState.Text = alarm.type == 1 ? KeyToStringConvert.GetLanguageStringByKey("C0278") : KeyToStringConvert.GetLanguageStringByKey("C0277"); string houseSnString = null; if(alarm.houseSn == 0) { houseSnString = KeyToStringConvert.GetLanguageStringByKey("C0230"); } else if (alarm.houseSn == 11) { houseSnString = KeyToStringConvert.GetLanguageStringByKey("C0231"); } else { houseSnString = $"{alarm.houseSn}{KeyToStringConvert.GetLanguageStringByKey("C0056")}"; } source._house.Text = houseSnString; source._alarmTitle.Text = alarm.title; source._alarmText.Text = alarm.text;//alarm.textDetail.Substring(alarm.textDetail.IndexOf(',')+1); source._alarmStartTime.Text = alarm.startTime; source._alarmEndTime.Text = alarm.endTime; //source._svg.Fill = new SolidColorBrush(Color.FromRgb(199, 80, 105)); //source._svg.Stretch = Stretch.Fill; //报警结束的颜色为灰色 if (alarm.type == 1) { if (DateTime.TryParse(alarm.startTime, out DateTime startTime) && DateTime.TryParse(alarm.endTime, out DateTime endTime)) { var alarmSpan = endTime.Subtract(startTime); source._alarmAllTime.Visibility = Visibility.Visible; //source._alarmAllTime.Text = $"总计:{(alarmSpan.Days * 24) + alarmSpan.Hours}H{alarmSpan.Minutes}M"; source._alarmAllTime.Text = $"{KeyToStringConvert.GetLanguageStringByKey("C0279")}:{(alarmSpan.Days * 24) + alarmSpan.Hours}H{alarmSpan.Minutes}M"; } source._imageMute.Visibility = Visibility.Hidden; source._borderLeft.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185)); //灰色 source._alarmStateBorder.Background = new SolidColorBrush(Colors.Transparent); source._alarmStateBorder.BorderThickness = new Thickness(1); source._alarmStateBorder.BorderBrush = new SolidColorBrush(Color.FromRgb(176, 180, 185)); //灰色 source._alarmState.Foreground = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色 source._alarmCircle1.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色 source._alarmCircle2.Background = new SolidColorBrush(Color.FromRgb(176, 180, 185));//灰色 switch (alarm.alarmKey) { case "PRESSURE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "DISK_SPACE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/StorageAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "TEMPERATURE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/TemperatureAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "TL_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_PORT_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ComlossAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "DISK_EXIST_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/HardwareLostAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_DOOR_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/DoorErrorAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "MATTING_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "PHOTO_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; case "AIR_SWAP_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarmEnd.png", UriKind.RelativeOrAbsolute)); break; default: break; } } else { switch (alarm.alarmKey) { case "PRESSURE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarming.png", UriKind.RelativeOrAbsolute)); break; case "AIR_SWAP_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PressureAlarming.png", UriKind.RelativeOrAbsolute)); break; case "DISK_SPACE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/StorageAlarming.png", UriKind.RelativeOrAbsolute)); break; case "TEMPERATURE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/TemperatureAlarming.png", UriKind.RelativeOrAbsolute)); break; case "TL_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarming.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ErrorAlarming.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_PORT_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/ComlossAlarming.png", UriKind.RelativeOrAbsolute)); break; case "DISK_EXIST_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/HardwareLostAlarming.png", UriKind.RelativeOrAbsolute)); break; case "HOUSE_DOOR_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/DoorErrorAlarming.png", UriKind.RelativeOrAbsolute)); break; case "MATTING_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarming.png", UriKind.RelativeOrAbsolute)); break; case "PHOTO_STATE_ALARM": source._alarm_Image.Source = new BitmapImage(new Uri("/ivf_tl_Operate;component/Resources/Image/PicDefeatAlarming.png", UriKind.RelativeOrAbsolute)); break; default: break; } if (alarm.mute == 1) source._imageMute.Source = source.voiceCloseImage; } } //public event Action OnMute; private ImageSource voiceCloseImage = Application.Current.Resources["VoiceCloseImage"] as ImageSource; private ImageSource voiceOpenImage = Application.Current.Resources["VoiceOpenImage"] as ImageSource; private void Image_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (!(sender is Image image)) return; if (Data.mute==0) { Data.mute = 1; AppData.Instance.MainPageView.SetAlarmMute(Data.id, Data.mute); image.Source = voiceCloseImage; } else { Data.mute = 0; image.Source = voiceOpenImage; AppData.Instance.MainPageView.SetAlarmMute(Data.id, Data.mute); } //if (this.Data.IsMute.Value) //{ // //开启声音 // this.Data.IsMute = false; // image.Source = voiceOpenImage; //} //else //{ // //关闭声音 // this.Data.IsMute = true; // image.Source = voiceCloseImage; //} //OnMute?.Invoke(this.Data); } } }