From fee172854fa664bb0711d1d24e8dd2fa46b5b4e6 Mon Sep 17 00:00:00 2001 From: Dusk_NM02 Date: Sat, 16 Jul 2022 10:38:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E5=90=AF=E5=8A=A8=E5=92=8C=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAsstGui/Helper/TrayIcon.cs | 36 ++++++++++++------- .../ViewModels/SettingsViewModel.cs | 2 +- .../ViewModels/TaskQueueViewModel.cs | 2 ++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/MeoAsstGui/Helper/TrayIcon.cs b/src/MeoAsstGui/Helper/TrayIcon.cs index 0b6afed1ad..89766bb806 100644 --- a/src/MeoAsstGui/Helper/TrayIcon.cs +++ b/src/MeoAsstGui/Helper/TrayIcon.cs @@ -22,6 +22,7 @@ namespace MeoAsstGui public partial class TrayIcon { private NotifyIcon notifyIcon = new NotifyIcon(); + private TaskQueueViewModel taskQueueViewModel; private WindowState ws; //记录窗体状态 private bool _isMinimizeToTaskbar = false; @@ -41,15 +42,23 @@ namespace MeoAsstGui MenuItem showMenu = new System.Windows.Forms.MenuItem("打开 MAA"); showMenu.Click += App_show; // 不知道怎么调用 TaskQueue.LinkStart, 等一个有缘的大佬来写( - //MenuItem startMenu = new System.Windows.Forms.MenuItem("开始长草"); - //startMenu.Click += StartTask; - //MenuItem stopMenu = new System.Windows.Forms.MenuItem("全部停止"); - //stopMenu.Click += StopTask; + MenuItem startMenu = new System.Windows.Forms.MenuItem("开始长草"); + startMenu.Click += StartTask; + MenuItem stopMenu = new System.Windows.Forms.MenuItem("全部停止"); + stopMenu.Click += StopTask; MenuItem exitMenu = new System.Windows.Forms.MenuItem("退出"); exitMenu.Click += App_exit; - System.Windows.Forms.MenuItem[] menuItems = new MenuItem[] { showMenu, exitMenu }; + System.Windows.Forms.MenuItem[] menuItems = new MenuItem[] { showMenu, startMenu, stopMenu, exitMenu }; this.notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(menuItems); } + /// + /// 只应该在TaskQueueViewModel的构造函数中调用这个函数,不要传入一个随便new出来的TaskQueueViewModel + /// + /// 一个 不是 随便new出来的TaskQueueViewModel + public void SetTaskQueueViewModel(TaskQueueViewModel taskQueueViewModel) + { + this.taskQueueViewModel = taskQueueViewModel; + } private void MainWindow_StateChanged(object sender, EventArgs e) { @@ -83,15 +92,16 @@ namespace MeoAsstGui } } - //private void StartTask(object sender, EventArgs e) - //{ - // 不知道怎么调用 TaskQueue.LinkStart, 等一个有缘的大佬来写( - //} + private void StartTask(object sender, EventArgs e) + { + //taskQueueViewModel意外为null了是不是也可以考虑Log一下 + taskQueueViewModel?.LinkStart(); + } - //private void StopTask(object sender, EventArgs e) - //{ - // 不知道怎么调用 TaskQueue.Stop, 等一个有缘的大佬来写( - //} + private void StopTask(object sender, EventArgs e) + { + taskQueueViewModel?.Stop(); + } private void App_exit(object sender, EventArgs e) { diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index a9b0cbc83a..fe9a2fc63f 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -63,7 +63,7 @@ namespace MeoAsstGui var trayObj = _container.Get(); trayObj.SetVisible(UseTray); trayObj.SetMinimizeToTaskbar(MinimizeToTray); - Bootstrapper.SetTrayIconInSettingsViewModel(trayObj); + Bootstrapper.SetTrayIconInSettingsViewModel(this); } private List _listTitle = new List(); diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 7d81957400..18f6f1ee3a 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -66,6 +66,8 @@ namespace MeoAsstGui LogItemViewModels = new ObservableCollection(); InitializeItems(); InitTimer(); + var trayIcon = _container.Get(); + trayIcon.SetTaskQueueViewModel(this); } //public void ShowButton()