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);
}
}
}