using HMI.Base; using HMI.Core.Api; using HMI.Core.Entity; using HMI.Core.Setting; using HMI.Core.Util; using HMI.UI.Util; using Panuon.WPF.UI; using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using HMI.Util.Base; using System.Windows.Interop; namespace WPFProject { public class SimpleAlarm { public string Time { get; set; } public string Message { get; set; } public override string ToString() { return $"{Time} {Message}"; } } /// /// PanuonWindow.xaml 的交互逻辑 /// public partial class PanuonWindow : WindowX, IPluginContainer,IAlarmShow, AlarmBase { public PanuonWindow() { this.Loaded += PanuonWindow_Loaded; } private UserInfo currentUser; public UserInfo CurrentUser { get => currentUser; set { Set(ref currentUser, value); } } private string welcomeTitle; public string WelcomeTitle { get => welcomeTitle; set { Set(ref welcomeTitle, value); } } private ObservableCollection alarms = new ObservableCollection(); public ObservableCollection 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(); 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 RefrshConfig() { WindowTitle = SystemSetting.Instance.WindowTitle; try { WindowLogo = new BitmapImage(new Uri(Path.Combine(PathHelper.IconFolder, SystemSetting.Instance.LogoPath))); } catch (Exception ex) { WindowLogo = null; } } private string windowTitle; public string WindowTitle { get { return windowTitle; } set { Set(ref windowTitle, value); } } private BitmapImage windowLogo; public BitmapImage WindowLogo { get { return windowLogo; } set { Set(ref windowLogo, value); } } private bool showMenu; public event CancelEventHandler OnCloseEvent; public event EventHandler DoCloseEvent; public event EventHandler LoadComplateEvent; public bool ShowMenu { get { return showMenu; } set { Set(ref showMenu, value); menuTab.ChangeItemVisibility(value); } } private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e) { RefrshConfig(); } protected override void OnClosing(CancelEventArgs e) { OnCloseEvent?.Invoke(this, e); base.OnClosing(e); } protected override void OnClosed(EventArgs e) { DoCloseEvent?.Invoke(this, e); base.OnClosed(e); } private void MenuItem_Click(object sender, RoutedEventArgs e) { MenuItem mi = sender as MenuItem; switch (mi.Name) { case "MiLogout": Logout(); break; case "MiRestart": RestartApp(); break; default: break; } } 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)) { File.Delete(path); } this.Closed -= window_Closed; this.Close(); PluginLoader.Reset(); Login login = new Login(); login.Show(); } } private void RestartApp() { if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureRestartApp")) == MessageBoxResult.OK) { Application.Current.Exit += Current_Exit; this.Close(); } } private void Current_Exit(object sender, ExitEventArgs e) { System.Windows.Forms.Application.Restart(); } private void window_Closed(object sender, EventArgs e) { 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.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(string message) { bool res = false; Dispatcher.Invoke(() => { if (Alarms.FirstOrDefault(e => e.Message == message) == null) { var data = new SimpleAlarm { Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Message = message }; 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; } public bool? Alarm(string message) { return true; } //private void BaseWindow_Loaded(object sender, RoutedEventArgs e) //{ // var s = (Style)this.Resources["WindowButton"]; // Button button = new Button // { // Content = "\ue60e", // Style = (Style)this.Resources["WindowButton"] // }; // WindowChrome.SetIsHitTestVisibleInChrome(button, true); // button.Click += Button_Click_2; // this.InsertButton(button, 0); //} } }