From 12e606635c42ea20f4b7c2bdda5204237a4b4c96 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 02 三月 2026 16:14:49 +0800
Subject: [PATCH] 优化
---
WPFProject/PanuonWindow.xaml.cs | 170 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 148 insertions(+), 22 deletions(-)
diff --git a/WPFProject/PanuonWindow.xaml.cs b/WPFProject/PanuonWindow.xaml.cs
index 8f84a71..3ed72b3 100644
--- a/WPFProject/PanuonWindow.xaml.cs
+++ b/WPFProject/PanuonWindow.xaml.cs
@@ -4,21 +4,34 @@
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()
{
@@ -35,13 +48,47 @@
}
}
+ 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;
}
@@ -92,18 +139,6 @@
}
}
-
- 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();
@@ -122,8 +157,10 @@
}
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;
@@ -135,20 +172,37 @@
}
}
+ 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()
@@ -167,9 +221,81 @@
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"];
--
Gitblit v1.9.1