using NEIntelligentControl2.Service.Alarm;
using NEIntelligentControl2.Service.Windturbine;
using System;
using System.Collections.Generic;
using System.Linq;
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 NEIntelligentControl2.Views.MainWindow
{
///
/// 状态栏
///
public partial class StatusBar : UserControl
{
// --------依赖属性-----------
public static readonly DependencyProperty IsMenuOpendProperty = DependencyProperty.Register("IsMenuOpen", typeof(bool), typeof(StatusBar));
// ------------事件-------------
public event RoutedEventHandler ItemClick { add { _MWMMain.ItemClick += value; } remove { _MWMMain.ItemClick -= value; } }
///
/// 菜单是否弹出
///
public bool IsMenuOpen { get => (bool)GetValue(IsMenuOpendProperty); set => SetValue(IsMenuOpendProperty, value); }
private AlarmManager _AlarmManager;
private SuggestionManager _SuggestionManager;
public StatusBar()
{
InitializeComponent();
_AlarmManager = App.ServiceProvider.GetService(typeof(AlarmManager)) as AlarmManager;
_AlarmManager.OnFaultCount += OnFaultCount;
_SuggestionManager = App.ServiceProvider.GetService(typeof(SuggestionManager)) as SuggestionManager;
_SuggestionManager.OnCountChanged = OnSuggestionCount;
}
private void OnSuggestionCount(int obj)
{
Dispatcher.Invoke(() => _TBSCount.Text = obj.ToString());
}
private void OnFaultCount(List fims)
{
if (fims == null || fims.Count <= 0) return;
var info = fims.FirstOrDefault();
Dispatcher.Invoke(() =>
{
_TBAlarmTime.Text = info.FaultInfo.LastUpdateTime?.ToString("HH:mm:ss");
_TBAlarmName.Text = info.FaultInfo.ObjectName;
_TBAlarmText.Text = info.FaultInfo.AlertText;
_TBAlarmType.Text = info.FaultInfo.MessageType == 3 ? "[解除]" : "";
});
}
private void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
switch (((FrameworkElement)sender).Tag)
{
case "menu":// 主菜单
IsMenuOpen = !IsMenuOpen;
break;
case "track":// 控制跟踪
Track();
break;
default:return;
}
}
private void Border_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
switch (((FrameworkElement)sender).Tag)
{
case "recomend":// 推荐
Recomend();
break;
default: return;
}
}
///
/// 控制跟踪
///
private void Track()
{
Windows.ControlTrackWindow.ShowWindow();
//WinForms.TrackForm tf = new WinForms.TrackForm();
//tf.Show();
}
///
/// 控制推荐
///
private void Recomend()
{
Windows.RecomendWindow.ShowWindow();
}
private void Popup_MouseLeave(object sender, MouseEventArgs e) => IsMenuOpen = false;
private void Grid_MouseEnter(object sender, MouseEventArgs e)
{
_PAlarm.IsOpen = true;
}
private void gdalarm_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
_RFIVMain.IsOpened = !_RFIVMain.IsOpened;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(async () => {
while (true)
{
this.Dispatcher.Invoke(() => time.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
await Task.Delay(1000);
}
},TaskCreationOptions.LongRunning);
}
}
}