using NEIntelligentControl2.Models.Alarm; using NEIntelligentControl2.Models.BoostStation; using NEIntelligentControl2.Models.Messages; using NEIntelligentControl2.Models.Pages; using NEIntelligentControl2.Properties; using NEIntelligentControl2.Service.Station; using NEIntelligentControl2.Service.Voice; using NEIntelligentControl2.Service.WebSocket; using NEIntelligentControl2.Views.BoostStation; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; 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.Pages.BoostStation { /// /// 升压站缩略图 /// public partial class PageStationAll : Page { private List shapeInfos; private StationManager _StationManager; private FaultPopupBridge _FaultPopupBridge; private MessageBridge _MessageBridge; private Dictionary _ThumbnailViews; public Action StationChanged { get; internal set; } public PageStationAll(List sis) { InitializeComponent(); shapeInfos = sis; _StationManager = App.ServiceProvider.GetService(typeof(StationManager)) as StationManager; _FaultPopupBridge = new FaultPopupBridge() { Messaged = OnAlarmMessage }; _MessageBridge = App.ServiceProvider.GetService(typeof(MessageBridge)) as MessageBridge; _ThumbnailViews = new Dictionary(); Init(); } private void Init() { var cs = Math.Max(3, Settings.Default.BoostStationColumns); _ug.Columns = cs; foreach (var v in shapeInfos) { var vv = v.Clone() as SVGViewer.Models.Info.ShapeInfo; ThumbnailView tv = new ThumbnailView(vv, _StationManager.GetCustomizeShapesDic()) { DoubleClicked = ThumbnailDoubleClicked }; _ug.Children.Add(tv); if (!_ThumbnailViews.ContainsKey(v.Id)) { _ThumbnailViews.Add(v.Id, tv); } } } private void ThumbnailDoubleClicked(string obj) { StationChanged?.Invoke(obj); } private void OnAlarmMessage(List obj) { if (obj == null || obj.Count == 0) return; var set = obj.Where(o => _ThumbnailViews.ContainsKey(o.Category2)).Select(o => o.Category2).ToHashSet(); Dispatcher.Invoke(() => { foreach (var v in _ThumbnailViews) { v.Value.IsAlarm = set.Contains(v.Key); } }); } private void Page_Loaded(object sender, RoutedEventArgs e) { _MessageBridge.Register(_FaultPopupBridge); } private void Page_Unloaded(object sender, RoutedEventArgs e) { _MessageBridge.Unregister(_FaultPopupBridge); } internal void SwitchSize(int v) { _ug.Columns = v; Settings.Default.BoostStationColumns = v; Settings.Default.Save(); } } }