| | |
| | | using HMI.Core.Setting; |
| | | using HMI.Core.Util; |
| | | using HMI.UI.Util; |
| | | using HMI.Util.Alarm; |
| | | using Panuon.WPF.UI; |
| | | using System; |
| | | using System.Collections.ObjectModel; |
| | | using System.ComponentModel; |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | | using System.Windows.Media.Imaging; |
| | | |
| | | namespace WPFProject |
| | | { |
| | | public class SimpleAlarm |
| | | { |
| | | public string Id { get; set; } |
| | | public string Time { get; set; } |
| | | public string Message { get; set; } |
| | | public override string ToString() |
| | | { |
| | | return $"{Time} {Message}"; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// PanuonWindow.xaml 的交互逻辑 |
| | | /// </summary> |
| | | public partial class PanuonWindow : WindowX, IPluginContainer |
| | | public partial class PanuonWindow : WindowX, IPluginContainer, IAlarmShow |
| | | { |
| | | public PanuonWindow() |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | private string welcomeTitle; |
| | | public string WelcomeTitle |
| | | { |
| | | get => welcomeTitle; |
| | | set |
| | | { |
| | | Set(ref welcomeTitle, value); |
| | | } |
| | | } |
| | | |
| | | private ObservableCollection<SimpleAlarm> alarms = new ObservableCollection<SimpleAlarm>(); |
| | | public ObservableCollection<SimpleAlarm> Alarms |
| | | { |
| | | get => alarms; |
| | | set |
| | | { |
| | | Set(ref alarms, value); |
| | | } |
| | | } |
| | | |
| | | public int AlarmCount |
| | | { |
| | | get => Alarms?.Count ?? 0; |
| | | } |
| | | |
| | | public ListBox sb |
| | | { |
| | | get; set; |
| | | } |
| | | |
| | | private void PanuonWindow_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | DataContext = this; |
| | | RefrshConfig(); |
| | | InitializeComponent(); |
| | | userMenu.Header = this.lang("App.Welcome", UserInfo.User.Name); |
| | | ShowMenu = true; |
| | | AlarmShowHelper.Register(this); |
| | | var sb = WindowXCaption.GetHeaderTemplate(this); |
| | | //sb.FindName("list",this.Con); |
| | | |
| | | WelcomeTitle = this.lang("App.Welcome", UserInfo.User.Name); |
| | | ShowMenu = false; |
| | | Application.Current.MainWindow = this; |
| | | SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private void Button_Click_2(object sender, RoutedEventArgs e) |
| | | { |
| | | ShowMenu = !ShowMenu; |
| | | //Button btn = (Button)sender; |
| | | //double temp = btn.RenderTransform.Value.Determinant; |
| | | //btn.RenderTransformOrigin = new Point(0.5, 0.5); |
| | | //ScaleTransform verticalFlipTransform = new ScaleTransform(1, temp * -1); |
| | | //btn.RenderTransform = verticalFlipTransform; |
| | | //menuTab.ChangeItemVisibility(); |
| | | } |
| | | |
| | | private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e) |
| | | { |
| | | RefrshConfig(); |
| | |
| | | } |
| | | |
| | | private void MenuItem_Click(object sender, RoutedEventArgs e) |
| | | {MenuItem mi = sender as MenuItem; |
| | | switch (mi.Name) { |
| | | { |
| | | MenuItem mi = sender as MenuItem; |
| | | switch (mi.Name) |
| | | { |
| | | case "MiLogout": |
| | | Logout(); |
| | | break; |
| | |
| | | } |
| | | } |
| | | |
| | | private bool logoutAdded = false; |
| | | |
| | | private void Logout() |
| | | { |
| | | if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureLogout")) == MessageBoxResult.OK) |
| | | { |
| | | string path = Path.Combine(PathHelper.DatabaseFolder, "user.bin"); |
| | | if (File.Exists(path)) { |
| | | if (File.Exists(path)) |
| | | { |
| | | File.Delete(path); |
| | | } |
| | | this.Closed -= window_Closed; |
| | | if (!logoutAdded) |
| | | { |
| | | this.Closed += Logout_PanuonWindow_Closed; |
| | | logoutAdded = true; |
| | | } |
| | | this.Close(); |
| | | PluginLoader.Reset(); |
| | | Login login = new Login(); |
| | | login.Show(); |
| | | } |
| | | } |
| | | |
| | | private void Logout_PanuonWindow_Closed(object sender, EventArgs e) |
| | | { |
| | | AlarmUtil.Release(); |
| | | PluginLoader.Reset(); |
| | | UserInfo.Logout(); |
| | | AlarmShowHelper.UnRegister(this); |
| | | Login login = new Login(); |
| | | login.Show(); |
| | | this.Closed -= Logout_PanuonWindow_Closed; |
| | | logoutAdded = false; |
| | | } |
| | | |
| | | private void RestartApp() |
| | |
| | | |
| | | private void window_Closed(object sender, EventArgs e) |
| | | { |
| | | try |
| | | { |
| | | AlarmUtil.Release(); |
| | | PluginLoader.Reset(); |
| | | UserInfo.Logout(); |
| | | AlarmShowHelper.UnRegister(this); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | Application.Current.Shutdown(); |
| | | } |
| | | |
| | | private void Button_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | Button btn = sender as Button; |
| | | switch (btn.Name) |
| | | { |
| | | case "minBtn": |
| | | this.Minimize(); |
| | | break; |
| | | case "maxBtn": |
| | | this.Maximize(); |
| | | break; |
| | | case "closeBtn": |
| | | this.Closed -= Logout_PanuonWindow_Closed; |
| | | this.Close(); |
| | | break; |
| | | case "BtnSwitchTheme": |
| | | ShowMenu = !ShowMenu; |
| | | //Button btn = (Button)sender; |
| | | //double temp = btn.RenderTransform.Value.Determinant; |
| | | //btn.RenderTransformOrigin = new Point(0.5, 0.5); |
| | | //ScaleTransform verticalFlipTransform = new ScaleTransform(1, temp * -1); |
| | | //btn.RenderTransform = verticalFlipTransform; |
| | | //menuTab.ChangeItemVisibility(); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | public bool ShowAlarm(AlarmText alarm) |
| | | { |
| | | bool res = false; |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | if (Alarms.FirstOrDefault(e => e.Id == alarm.VirtualId) == null) |
| | | { |
| | | var data = new SimpleAlarm |
| | | { |
| | | Id = alarm.VirtualId, |
| | | Time = alarm.Time, |
| | | Message = alarm.AlarmInfo |
| | | }; |
| | | Alarms.Add(data); |
| | | sb?.ScrollIntoView(data); |
| | | res = true; |
| | | } |
| | | }); |
| | | return res; |
| | | } |
| | | |
| | | private void list_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | sb = sender as ListBox; |
| | | sb.Loaded -= list_Loaded; |
| | | } |
| | | |
| | | private void Clear_AllAlarm_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | Alarms?.Clear(); |
| | | } |
| | | |
| | | //private void BaseWindow_Loaded(object sender, RoutedEventArgs e) |
| | | //{ |
| | | // var s = (Style)this.Resources["WindowButton"]; |