提交记录修改Core/Servicers/Instances/AppObserver.cs+2 −0看文件
修改UI/App.xaml.cs+5 −145看文件
修改UI/MainWindow.xaml.cs+1 −12看文件
新增UI/Servicers/IStatusBarIconServicer.cs+19 −0看文件
修改UI/Servicers/MainServicer.cs+11 −1看文件
新增UI/Servicers/StatusBarIconServicer.cs+215 −0看文件
修改UI/UI.csproj+2 −0看文件
| @@ -89,6 +89,8 @@ namespace Core.Servicers.Instances | ||
| 89 | 89 | int titleCapacity = Win32API.GetWindowTextLength(hwnd) * 2; |
| 90 | 90 | StringBuilder stringBuilder = new StringBuilder(titleCapacity); |
| 91 | 91 | Win32API.GetWindowText(hwnd, stringBuilder, stringBuilder.Capacity); |
| 92 | 新增: | |
| 93 | 新增: | |
| 92 | 94 | if (IsSystemProcess(processName, stringBuilder.ToString())) |
| 93 | 95 | { |
| 94 | 96 | // 过滤掉一些系统进程 |
| @@ -30,26 +30,11 @@ namespace UI | ||
| 30 | 30 | { |
| 31 | 31 | private readonly ServiceProvider serviceProvider; |
| 32 | 32 | private System.Threading.Mutex mutex; |
| 33 | 删除: | |
| 34 | 删除: // 状态栏图标 | |
| 35 | 删除: private System.Windows.Forms.NotifyIcon statusBarIcon; | |
| 36 | 删除: | |
| 37 | 33 | // 保活窗口 |
| 38 | 34 | private HideWindow keepaliveWindow; |
| 39 | 35 | |
| 40 | 删除: // 状态栏图标菜单 | |
| 41 | 删除: private ContextMenu contextMenu; | |
| 42 | 删除: | |
| 43 | 删除: private DefaultWindow mainWindow; | |
| 44 | 删除: | |
| 45 | 删除: private IAppData appData; | |
| 46 | 删除: | |
| 47 | 36 | public App() |
| 48 | 37 | { |
| 49 | 删除: InitStatusBarIcon(); | |
| 50 | 删除: | |
| 51 | 删除: WatchStatus(); | |
| 52 | 删除: | |
| 53 | 38 | DispatcherUnhandledException += App_DispatcherUnhandledException; |
| 54 | 39 | |
| 55 | 40 | #if DEBUG |
| @@ -65,31 +50,23 @@ namespace UI | ||
| 65 | 50 | protected override void OnExit(ExitEventArgs e) |
| 66 | 51 | { |
| 67 | 52 | base.OnExit(e); |
| 68 | 删除: | |
| 69 | 删除: | |
| 70 | 删除: //appData.SaveAppChanges(); | |
| 71 | 删除: | |
| 72 | 53 | Logger.Save(true); |
| 73 | 删除: | |
| 74 | 删除: statusBarIcon.Visible = false; | |
| 75 | 54 | } |
| 76 | 55 | private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) |
| 77 | 56 | { |
| 78 | 删除: //appData.SaveAppChanges(); | |
| 57 | 新增: e.Handled = true; | |
| 79 | 58 | |
| 80 | 59 | // 记录崩溃错误 |
| 81 | 60 | Logger.Error("[程序崩溃异常] " + e.Exception.ToString()); |
| 82 | 删除: | |
| 83 | 61 | Logger.Save(true); |
| 84 | 62 | |
| 85 | 删除: e.Handled = true; | |
| 86 | 删除: | |
| 87 | 删除: Shutdown(); | |
| 88 | 删除: | |
| 89 | 63 | // 显示崩溃弹窗 |
| 90 | 64 | string taiBugPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, |
| 91 | 65 | "TaiBug.exe"); |
| 92 | 66 | ProcessHelper.Run(taiBugPath, new string[] { string.Empty }); |
| 67 | 新增: | |
| 68 | 新增: // 退出程序 | |
| 69 | 新增: Shutdown(); | |
| 93 | 70 | } |
| 94 | 71 | |
| 95 | 72 | #region 获取当前程序是否已运行 |
| @@ -111,74 +88,6 @@ namespace UI | ||
| 111 | 88 | } |
| 112 | 89 | #endregion |
| 113 | 90 | |
| 114 | 删除: #region 状态栏图标 | |
| 115 | 删除: /// <summary> | |
| 116 | 删除: /// 初始化状态栏图标 | |
| 117 | 删除: /// </summary> | |
| 118 | 删除: private void InitStatusBarIcon() | |
| 119 | 删除: { | |
| 120 | 删除: CreateStatusBarIconMenu(); | |
| 121 | 删除: | |
| 122 | 删除: statusBarIcon = new System.Windows.Forms.NotifyIcon(); | |
| 123 | 删除: //statusBarIcon.Text = "Tai!"; | |
| 124 | 删除: Stream iconStream = GetResourceStream(new Uri("pack://application:,,,/Tai;component/Resources/Icons/taibusy.ico")).Stream; | |
| 125 | 删除: statusBarIcon.Icon = new Icon(iconStream); | |
| 126 | 删除: //statusBarIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetEntryAssembly().ManifestModule.Name); | |
| 127 | 删除: | |
| 128 | 删除: statusBarIcon.Visible = true; | |
| 129 | 删除: statusBarIcon.MouseClick += NotifyIcon_MouseClick; | |
| 130 | 删除: statusBarIcon.MouseDoubleClick += NotifyIcon_MouseDoubleClick; | |
| 131 | 删除: } | |
| 132 | 删除: private void NotifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e) | |
| 133 | 删除: { | |
| 134 | 删除: if (e.Button == System.Windows.Forms.MouseButtons.Right && !AppState.IsLoading) | |
| 135 | 删除: { | |
| 136 | 删除: //右键单击弹出托盘菜单 | |
| 137 | 删除: contextMenu.IsOpen = true; | |
| 138 | 删除: } | |
| 139 | 删除: } | |
| 140 | 删除: private void NotifyIcon_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) | |
| 141 | 删除: { | |
| 142 | 删除: if (e.Button == System.Windows.Forms.MouseButtons.Left && !AppState.IsLoading) | |
| 143 | 删除: { | |
| 144 | 删除: //双击托盘图标显示主窗口 | |
| 145 | 删除: ShowMainWindow(); | |
| 146 | 删除: } | |
| 147 | 删除: } | |
| 148 | 删除: | |
| 149 | 删除: /// <summary> | |
| 150 | 删除: /// 创建状态栏图标菜单 | |
| 151 | 删除: /// </summary> | |
| 152 | 删除: private void CreateStatusBarIconMenu() | |
| 153 | 删除: { | |
| 154 | 删除: contextMenu = new ContextMenu(); | |
| 155 | 删除: App.Current.Deactivated += (e, c) => | |
| 156 | 删除: { | |
| 157 | 删除: contextMenu.IsOpen = false; | |
| 158 | 删除: }; | |
| 159 | 删除: var mainWindowMenuItem = new MenuItem(); | |
| 160 | 删除: mainWindowMenuItem.Header = "主界面"; | |
| 161 | 删除: mainWindowMenuItem.Click += MainWindowMenuItem_Click; | |
| 162 | 删除: var exitMenuItem = new MenuItem(); | |
| 163 | 删除: exitMenuItem.Header = "退出"; | |
| 164 | 删除: exitMenuItem.Click += ExitMenuItem_Click; ; | |
| 165 | 删除: | |
| 166 | 删除: contextMenu.Items.Add(mainWindowMenuItem); | |
| 167 | 删除: contextMenu.Items.Add(exitMenuItem); | |
| 168 | 删除: | |
| 169 | 删除: } | |
| 170 | 删除: | |
| 171 | 删除: private void ExitMenuItem_Click(object sender, RoutedEventArgs e) | |
| 172 | 删除: { | |
| 173 | 删除: Shutdown(); | |
| 174 | 删除: } | |
| 175 | 删除: | |
| 176 | 删除: private void MainWindowMenuItem_Click(object sender, RoutedEventArgs e) | |
| 177 | 删除: { | |
| 178 | 删除: ShowMainWindow(); | |
| 179 | 删除: } | |
| 180 | 删除: #endregion | |
| 181 | 删除: | |
| 182 | 91 | private void ConfigureServices(IServiceCollection services) |
| 183 | 92 | { |
| 184 | 93 | // 核心服务 |
| @@ -201,10 +110,10 @@ namespace UI | ||
| 201 | 110 | services.AddSingleton<IMainServicer, MainServicer>(); |
| 202 | 111 | services.AddSingleton<IInputServicer, InputServicer>(); |
| 203 | 112 | services.AddSingleton<IWebSiteContextMenuServicer, WebSiteContextMenuServicer>(); |
| 113 | 新增: services.AddSingleton<IStatusBarIconServicer, StatusBarIconServicer>(); | |
| 204 | 114 | |
| 205 | 115 | // 主窗口 |
| 206 | 116 | services.AddSingleton<MainViewModel>(); |
| 207 | 删除: services.AddTransient<MainWindow>(); | |
| 208 | 117 | |
| 209 | 118 | // 首页 |
| 210 | 119 | services.AddTransient<IndexPage>(); |
| @@ -251,57 +160,8 @@ namespace UI | ||
| 251 | 160 | var main = serviceProvider.GetService<IMainServicer>(); |
| 252 | 161 | main.Start(); |
| 253 | 162 | |
| 254 | 删除: var observer = serviceProvider.GetService<IAppObserver>(); | |
| 255 | 删除: observer.OnAppActive += (args) => | |
| 256 | 删除: { | |
| 257 | 删除: Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, new Action(() => | |
| 258 | 删除: { | |
| 259 | 删除: contextMenu.IsOpen = false; | |
| 260 | 删除: })); | |
| 261 | 删除: }; | |
| 262 | 删除: | |
| 263 | 删除: var theme = serviceProvider.GetService<IThemeServicer>(); | |
| 264 | 删除: theme.OnThemeChanged += (a, c) => | |
| 265 | 删除: { | |
| 266 | 删除: contextMenu.UpdateDefaultStyle(); | |
| 267 | 删除: }; | |
| 268 | 163 | // 创建保活窗口 |
| 269 | 164 | keepaliveWindow = new HideWindow(); |
| 270 | 165 | } |
| 271 | 删除: | |
| 272 | 删除: | |
| 273 | 删除: | |
| 274 | 删除: private void ShowMainWindow() | |
| 275 | 删除: { | |
| 276 | 删除: var dataContext = serviceProvider.GetService<MainViewModel>(); | |
| 277 | 删除: | |
| 278 | 删除: | |
| 279 | 删除: if (mainWindow == null || mainWindow.IsWindowClosed) | |
| 280 | 删除: { | |
| 281 | 删除: mainWindow = serviceProvider.GetService<MainWindow>(); | |
| 282 | 删除: | |
| 283 | 删除: mainWindow.DataContext = dataContext; | |
| 284 | 删除: dataContext.LoadDefaultPage(); | |
| 285 | 删除: } | |
| 286 | 删除: | |
| 287 | 删除: mainWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen; | |
| 288 | 删除: mainWindow.WindowState = WindowState.Normal; | |
| 289 | 删除: mainWindow.Show(); | |
| 290 | 删除: mainWindow.Activate(); | |
| 291 | 删除: } | |
| 292 | 删除: | |
| 293 | 删除: private async void WatchStatus() | |
| 294 | 删除: { | |
| 295 | 删除: await Task.Run(() => | |
| 296 | 删除: { | |
| 297 | 删除: while (AppState.IsLoading) | |
| 298 | 删除: { | |
| 299 | 删除: statusBarIcon.Text = $"[{AppState.ProcessValue}%] Tai [{AppState.ActionText}]"; | |
| 300 | 删除: } | |
| 301 | 删除: statusBarIcon.Text = "Tai!"; | |
| 302 | 删除: Stream iconStream = GetResourceStream(new Uri("pack://application:,,,/Tai;component/Resources/Icons/tai32.ico")).Stream; | |
| 303 | 删除: statusBarIcon.Icon = new Icon(iconStream); | |
| 304 | 删除: }); | |
| 305 | 删除: } | |
| 306 | 166 | } |
| 307 | 167 | } |
| @@ -23,20 +23,9 @@ namespace UI | ||
| 23 | 23 | /// </summary> |
| 24 | 24 | public partial class MainWindow : DefaultWindow |
| 25 | 25 | { |
| 26 | 删除: private readonly IThemeServicer themeServicer; | |
| 27 | 删除: public MainWindow(IThemeServicer themeServicer) | |
| 26 | 新增: public MainWindow() | |
| 28 | 27 | { |
| 29 | 28 | InitializeComponent(); |
| 30 | 删除: this.themeServicer = themeServicer; | |
| 31 | 删除: themeServicer.SetMainWindow(this); | |
| 32 | 删除: themeServicer.UpdateWindowStyle(); | |
| 33 | 删除: Unloaded += Page_Unloaded; | |
| 34 | 删除: } | |
| 35 | 删除: | |
| 36 | 删除: private void Page_Unloaded(object sender, RoutedEventArgs e) | |
| 37 | 删除: { | |
| 38 | 删除: Unloaded -= Page_Unloaded; | |
| 39 | 删除: DataContext = null; | |
| 40 | 29 | } |
| 41 | 30 | } |
| 42 | 31 | } |
| @@ -0,0 +1,19 @@ | ||
| 1 | 新增:using System; | |
| 2 | 新增:using System.Collections.Generic; | |
| 3 | 新增:using System.Linq; | |
| 4 | 新增:using System.Text; | |
| 5 | 新增:using System.Threading.Tasks; | |
| 6 | 新增: | |
| 7 | 新增:namespace UI.Servicers | |
| 8 | 新增:{ | |
| 9 | 新增: /// <summary> | |
| 10 | 新增: /// 状态栏图标服务 | |
| 11 | 新增: /// </summary> | |
| 12 | 新增: public interface IStatusBarIconServicer | |
| 13 | 新增: { | |
| 14 | 新增: /// <summary> | |
| 15 | 新增: /// 初始化状态栏图标 | |
| 16 | 新增: /// </summary> | |
| 17 | 新增: void Init(); | |
| 18 | 新增: } | |
| 19 | 新增:} | |
| @@ -14,16 +14,26 @@ namespace UI.Servicers | ||
| 14 | 14 | private readonly IInputServicer inputServicer; |
| 15 | 15 | private readonly IAppContextMenuServicer appContextMenuServicer; |
| 16 | 16 | private readonly IWebSiteContextMenuServicer _webSiteContext; |
| 17 | 删除: public MainServicer(IMain main, IThemeServicer themeServicer, IInputServicer inputServicer, IAppContextMenuServicer appContextMenuServicer, IWebSiteContextMenuServicer webSiteContext_) | |
| 17 | 新增: private readonly IStatusBarIconServicer _statusBarIconServicer; | |
| 18 | 新增: public MainServicer( | |
| 19 | 新增: IMain main, | |
| 20 | 新增: IThemeServicer themeServicer, | |
| 21 | 新增: IInputServicer inputServicer, | |
| 22 | 新增: IAppContextMenuServicer appContextMenuServicer, | |
| 23 | 新增: IWebSiteContextMenuServicer webSiteContext_, | |
| 24 | 新增: IStatusBarIconServicer statusBarIconServicer_) | |
| 18 | 25 | { |
| 19 | 26 | this.main = main; |
| 20 | 27 | this.themeServicer = themeServicer; |
| 21 | 28 | this.inputServicer = inputServicer; |
| 22 | 29 | this.appContextMenuServicer = appContextMenuServicer; |
| 23 | 30 | _webSiteContext = webSiteContext_; |
| 31 | 新增: _statusBarIconServicer = statusBarIconServicer_; | |
| 24 | 32 | } |
| 25 | 33 | public void Start() |
| 26 | 34 | { |
| 35 | 新增: _statusBarIconServicer.Init(); | |
| 36 | 新增: | |
| 27 | 37 | main.OnStarted += Main_OnStarted; |
| 28 | 38 | main.Run(); |
| 29 | 39 | } |
| @@ -0,0 +1,215 @@ | ||
| 1 | 新增:using Core; | |
| 2 | 新增:using Core.Librarys; | |
| 3 | 新增:using Core.Servicers.Interfaces; | |
| 4 | 新增:using System; | |
| 5 | 新增:using System.Collections.Generic; | |
| 6 | 新增:using System.Drawing; | |
| 7 | 新增:using System.IO; | |
| 8 | 新增:using System.Linq; | |
| 9 | 新增:using System.Text; | |
| 10 | 新增:using System.Threading.Tasks; | |
| 11 | 新增:using System.Windows; | |
| 12 | 新增:using System.Windows.Controls; | |
| 13 | 新增:using System.Windows.Threading; | |
| 14 | 新增:using UI.ViewModels; | |
| 15 | 新增: | |
| 16 | 新增:namespace UI.Servicers | |
| 17 | 新增:{ | |
| 18 | 新增: public class StatusBarIconServicer : IStatusBarIconServicer | |
| 19 | 新增: { | |
| 20 | 新增: // 状态栏图标 | |
| 21 | 新增: private System.Windows.Forms.NotifyIcon _statusBarIcon; | |
| 22 | 新增: // 状态栏图标菜单 | |
| 23 | 新增: private ContextMenu _contextMenu; | |
| 24 | 新增: | |
| 25 | 新增: /// <summary> | |
| 26 | 新增: /// 图标类型 | |
| 27 | 新增: /// </summary> | |
| 28 | 新增: public enum IconType | |
| 29 | 新增: { | |
| 30 | 新增: /// <summary> | |
| 31 | 新增: /// 正常 | |
| 32 | 新增: /// </summary> | |
| 33 | 新增: Normal, | |
| 34 | 新增: /// <summary> | |
| 35 | 新增: /// 繁忙中 | |
| 36 | 新增: /// </summary> | |
| 37 | 新增: Busy | |
| 38 | 新增: } | |
| 39 | 新增: | |
| 40 | 新增: private readonly IAppObserver _appObserver; | |
| 41 | 新增: private readonly IThemeServicer _themeServicer; | |
| 42 | 新增: private readonly MainViewModel _mainVM; | |
| 43 | 新增: private MainWindow _mainWindow; | |
| 44 | 新增: public StatusBarIconServicer( | |
| 45 | 新增: IAppObserver appObserver_, | |
| 46 | 新增: IThemeServicer themeServicer_, | |
| 47 | 新增: MainViewModel mainVM_ | |
| 48 | 新增: ) | |
| 49 | 新增: { | |
| 50 | 新增: _appObserver = appObserver_; | |
| 51 | 新增: _themeServicer = themeServicer_; | |
| 52 | 新增: _mainVM = mainVM_; | |
| 53 | 新增: } | |
| 54 | 新增: public void Init() | |
| 55 | 新增: { | |
| 56 | 新增: InitMenu(); | |
| 57 | 新增: | |
| 58 | 新增: _statusBarIcon = new System.Windows.Forms.NotifyIcon(); | |
| 59 | 新增: _statusBarIcon.Visible = true; | |
| 60 | 新增: _statusBarIcon.MouseClick += _statusBarIcon_MouseClick; | |
| 61 | 新增: _statusBarIcon.MouseDoubleClick += _statusBarIcon_MouseDoubleClick; | |
| 62 | 新增: | |
| 63 | 新增: SetIcon(IconType.Busy); | |
| 64 | 新增: | |
| 65 | 新增: WatchStateAsync(); | |
| 66 | 新增: | |
| 67 | 新增: _appObserver.OnAppActive += _appObserver_OnAppActive; | |
| 68 | 新增: _themeServicer.OnThemeChanged += _themeServicer_OnThemeChanged; | |
| 69 | 新增: Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; | |
| 70 | 新增: } | |
| 71 | 新增: | |
| 72 | 新增: private void Current_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) | |
| 73 | 新增: { | |
| 74 | 新增: _statusBarIcon.Visible = false; | |
| 75 | 新增: Logger.Save(true); | |
| 76 | 新增: } | |
| 77 | 新增: | |
| 78 | 新增: private void _themeServicer_OnThemeChanged(object sender, EventArgs e) | |
| 79 | 新增: { | |
| 80 | 新增: _contextMenu.UpdateDefaultStyle(); | |
| 81 | 新增: } | |
| 82 | 新增: | |
| 83 | 新增: private void _appObserver_OnAppActive(Core.Models.AppObserver.AppObserverEventArgs args) | |
| 84 | 新增: { | |
| 85 | 新增: Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => | |
| 86 | 新增: { | |
| 87 | 新增: _contextMenu.IsOpen = false; | |
| 88 | 新增: })); | |
| 89 | 新增: } | |
| 90 | 新增: | |
| 91 | 新增: /// <summary> | |
| 92 | 新增: /// 初始化状态栏菜单 | |
| 93 | 新增: /// </summary> | |
| 94 | 新增: private void InitMenu() | |
| 95 | 新增: { | |
| 96 | 新增: _contextMenu = new ContextMenu(); | |
| 97 | 新增: App.Current.Deactivated += (e, c) => | |
| 98 | 新增: { | |
| 99 | 新增: _contextMenu.IsOpen = false; | |
| 100 | 新增: }; | |
| 101 | 新增: var mainWindowMenuItem = new MenuItem(); | |
| 102 | 新增: mainWindowMenuItem.Header = "主界面"; | |
| 103 | 新增: mainWindowMenuItem.Click += MainWindowMenuItem_Click; ; | |
| 104 | 新增: var exitMenuItem = new MenuItem(); | |
| 105 | 新增: exitMenuItem.Header = "退出"; | |
| 106 | 新增: exitMenuItem.Click += ExitMenuItem_Click; | |
| 107 | 新增: | |
| 108 | 新增: _contextMenu.Items.Add(mainWindowMenuItem); | |
| 109 | 新增: _contextMenu.Items.Add(exitMenuItem); | |
| 110 | 新增: | |
| 111 | 新增: } | |
| 112 | 新增: | |
| 113 | 新增: /// <summary> | |
| 114 | 新增: /// 等待程序加载 | |
| 115 | 新增: /// </summary> | |
| 116 | 新增: private async void WatchStateAsync() | |
| 117 | 新增: { | |
| 118 | 新增: await Task.Run(() => | |
| 119 | 新增: { | |
| 120 | 新增: while (AppState.IsLoading) | |
| 121 | 新增: { | |
| 122 | 新增: _statusBarIcon.Text = $"[{AppState.ProcessValue}%] Tai [{AppState.ActionText}]"; | |
| 123 | 新增: } | |
| 124 | 新增: _statusBarIcon.Text = "Tai!"; | |
| 125 | 新增: SetIcon(); | |
| 126 | 新增: }); | |
| 127 | 新增: } | |
| 128 | 新增: | |
| 129 | 新增: /// <summary> | |
| 130 | 新增: /// 设置图标 | |
| 131 | 新增: /// </summary> | |
| 132 | 新增: /// <param name="iconType_">图标样式</param> | |
| 133 | 新增: private void SetIcon(IconType iconType_ = IconType.Normal) | |
| 134 | 新增: { | |
| 135 | 新增: try | |
| 136 | 新增: { | |
| 137 | 新增: string iconName = "tai32"; | |
| 138 | 新增: switch (iconType_) | |
| 139 | 新增: { | |
| 140 | 新增: case IconType.Busy: | |
| 141 | 新增: iconName = "taibusy"; | |
| 142 | 新增: break; | |
| 143 | 新增: default: | |
| 144 | 新增: iconName = "tai32"; | |
| 145 | 新增: break; | |
| 146 | 新增: } | |
| 147 | 新增: Stream iconStream = Application.GetResourceStream(new Uri($"pack://application:,,,/Tai;component/Resources/Icons/{iconName}.ico")).Stream; | |
| 148 | 新增: _statusBarIcon.Icon = new Icon(iconStream); | |
| 149 | 新增: } | |
| 150 | 新增: catch (Exception ex) | |
| 151 | 新增: { | |
| 152 | 新增: Logger.Error(ex.Message); | |
| 153 | 新增: Logger.Save(true); | |
| 154 | 新增: } | |
| 155 | 新增: } | |
| 156 | 新增: | |
| 157 | 新增: private void ShowMainWindow() | |
| 158 | 新增: { | |
| 159 | 新增: if (_mainWindow == null || _mainWindow.IsWindowClosed) | |
| 160 | 新增: { | |
| 161 | 新增: _mainWindow = new MainWindow(); | |
| 162 | 新增: _mainWindow.DataContext = _mainVM; | |
| 163 | 新增: _mainWindow.Loaded += _mainWindow_Loaded; | |
| 164 | 新增: _mainVM.LoadDefaultPage(); | |
| 165 | 新增: } | |
| 166 | 新增: _mainWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen; | |
| 167 | 新增: _mainWindow.WindowState = WindowState.Normal; | |
| 168 | 新增: _mainWindow.Show(); | |
| 169 | 新增: _mainWindow.Activate(); | |
| 170 | 新增: } | |
| 171 | 新增: | |
| 172 | 新增: private void _mainWindow_Loaded(object sender, RoutedEventArgs e) | |
| 173 | 新增: { | |
| 174 | 新增: var window = sender as MainWindow; | |
| 175 | 新增: | |
| 176 | 新增: _themeServicer.SetMainWindow(window); | |
| 177 | 新增: _themeServicer.UpdateWindowStyle(); | |
| 178 | 新增: } | |
| 179 | 新增: | |
| 180 | 新增: private void ExitApp() | |
| 181 | 新增: { | |
| 182 | 新增: _statusBarIcon.Visible = false; | |
| 183 | 新增: | |
| 184 | 新增: Logger.Save(true); | |
| 185 | 新增: Application.Current.Shutdown(); | |
| 186 | 新增: } | |
| 187 | 新增: private void ExitMenuItem_Click(object sender, RoutedEventArgs e) | |
| 188 | 新增: { | |
| 189 | 新增: ExitApp(); | |
| 190 | 新增: } | |
| 191 | 新增: | |
| 192 | 新增: private void MainWindowMenuItem_Click(object sender, RoutedEventArgs e) | |
| 193 | 新增: { | |
| 194 | 新增: ShowMainWindow(); | |
| 195 | 新增: } | |
| 196 | 新增: | |
| 197 | 新增: private void _statusBarIcon_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) | |
| 198 | 新增: { | |
| 199 | 新增: if (e.Button == System.Windows.Forms.MouseButtons.Left && !AppState.IsLoading) | |
| 200 | 新增: { | |
| 201 | 新增: //双击托盘图标显示主窗口 | |
| 202 | 新增: ShowMainWindow(); | |
| 203 | 新增: } | |
| 204 | 新增: } | |
| 205 | 新增: | |
| 206 | 新增: private void _statusBarIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e) | |
| 207 | 新增: { | |
| 208 | 新增: if (e.Button == System.Windows.Forms.MouseButtons.Right && !AppState.IsLoading) | |
| 209 | 新增: { | |
| 210 | 新增: //右键单击弹出托盘菜单 | |
| 211 | 新增: _contextMenu.IsOpen = true; | |
| 212 | 新增: } | |
| 213 | 新增: } | |
| 214 | 新增: } | |
| 215 | 新增:} | |
| @@ -201,6 +201,8 @@ | ||
| 201 | 201 | <Compile Include="Models\SettingPageModel.cs" /> |
| 202 | 202 | <Compile Include="Models\UINotifyPropertyChanged.cs" /> |
| 203 | 203 | <Compile Include="Models\WebSiteDetailPageModel.cs" /> |
| 204 | 新增: <Compile Include="Servicers\IStatusBarIconServicer.cs" /> | |
| 205 | 新增: <Compile Include="Servicers\StatusBarIconServicer.cs" /> | |
| 204 | 206 | <Compile Include="Servicers\WebSiteContextMenuServicer.cs" /> |
| 205 | 207 | <Compile Include="Servicers\AppContextMenuServicer.cs" /> |
| 206 | 208 | <Compile Include="Servicers\IWebSiteContextMenuServicer.cs" /> |

