diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs index 55495216..c68ae860 100644 --- a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs @@ -59,7 +59,7 @@ public sealed partial class App : Application public new void Exit() { - XamlWindowLifetime.IsApplicationExiting = true; + XamlWindowLifetime.ApplicationExiting = true; base.Exit(); } diff --git a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs index 7a2cb500..d88ac044 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs @@ -7,8 +7,10 @@ using Microsoft.UI.Xaml; using Snap.Hutao.Core.LifeCycle.InterProcess; using Snap.Hutao.Core.Setting; using Snap.Hutao.Core.Shell; +using Snap.Hutao.Core.Windowing; using Snap.Hutao.Core.Windowing.HotKey; using Snap.Hutao.Core.Windowing.NotifyIcon; +using Snap.Hutao.Service; using Snap.Hutao.Service.DailyNote; using Snap.Hutao.Service.Discord; using Snap.Hutao.Service.Hutao; @@ -64,8 +66,9 @@ internal sealed partial class AppActivation : IAppActivation, IAppActivationActi ToastNotificationManagerCompat.OnActivated += NotificationActivate; serviceProvider.GetRequiredService().RegisterAll(); - if (LocalSetting.Get(SettingKeys.IsNotifyIconEnabled, true)) + if (serviceProvider.GetRequiredService().IsNotifyIconEnabled) { + XamlWindowLifetime.ApplicationLaunchedWithNotifyIcon = true; serviceProvider.GetRequiredService().DispatcherShutdownMode = DispatcherShutdownMode.OnExplicitShutdown; _ = serviceProvider.GetRequiredService(); } diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Setting/SettingKeys.cs b/src/Snap.Hutao/Snap.Hutao/Core/Setting/SettingKeys.cs index b253332a..f62b8bfe 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Setting/SettingKeys.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Setting/SettingKeys.cs @@ -30,7 +30,6 @@ internal static class SettingKeys public const string StaticResourceImageArchive = "StaticResourceImageArchive"; public const string HotKeyMouseClickRepeatForever = "HotKeyMouseClickRepeatForever"; public const string IsAllocConsoleDebugModeEnabled = "IsAllocConsoleDebugModeEnabled2"; - public const string IsNotifyIconEnabled = "IsNotifyIconEnabled"; #endregion #region Passport diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowController.cs index 4c072c1d..8715069e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowController.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowController.cs @@ -97,7 +97,7 @@ internal sealed class XamlWindowController private void OnWindowClosed(object sender, WindowEventArgs args) { - if (LocalSetting.Get(SettingKeys.IsNotifyIconEnabled, true) && !XamlWindowLifetime.IsApplicationExiting) + if (XamlWindowLifetime.ApplicationLaunchedWithNotifyIcon && !XamlWindowLifetime.ApplicationExiting) { args.Handled = true; window.Hide(); diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowLifetime.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowLifetime.cs index 5ff11dee..46e63c3b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowLifetime.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowLifetime.cs @@ -5,5 +5,7 @@ namespace Snap.Hutao.Core.Windowing; internal static class XamlWindowLifetime { - public static bool IsApplicationExiting { get; set; } + public static bool ApplicationLaunchedWithNotifyIcon { get; set; } + + public static bool ApplicationExiting { get; set; } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowSubclass.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowSubclass.cs index 07dc5dd3..1f6ce5fe 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowSubclass.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/XamlWindowSubclass.cs @@ -96,7 +96,7 @@ internal sealed class XamlWindowSubclass : IDisposable } } - if (XamlWindowLifetime.IsApplicationExiting) + if (XamlWindowLifetime.ApplicationExiting) { return default; } diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs index 8e625f56..a34712f1 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs @@ -12,6 +12,7 @@ internal sealed partial class SettingEntry public const string GamePathEntries = "GamePathEntries"; public const string Culture = "Culture"; + public const string IsNotifyIconEnabled = "IsNotifyIconEnabled"; public const string SystemBackdropType = "SystemBackdropType"; public const string ElementTheme = "ElementTheme"; public const string BackgroundImageType = "BackgroundImageType"; diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index be6bb0bd..3a86e8ec 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2663,6 +2663,12 @@ 快捷键 + + 在通知区域显示图标,以允许执行后台任务,重启后生效 + + + 通知区域图标 + 前往官网 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs index 9fb24aa6..4b701632 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs @@ -15,6 +15,7 @@ namespace Snap.Hutao.Service; [Injection(InjectAs.Singleton)] internal sealed partial class AppOptions : DbStoreOptions { + private bool? isNotifyIconEnabled; private bool? isEmptyHistoryWishVisible; private bool? isUnobtainedWishItemVisible; private BackdropType? backdropType; @@ -23,6 +24,12 @@ internal sealed partial class AppOptions : DbStoreOptions private Region? region; private string? geetestCustomCompositeUrl; + public bool IsNotifyIconEnabled + { + get => GetOption(ref isNotifyIconEnabled, SettingEntry.IsNotifyIconEnabled, true); + set => SetOption(ref isNotifyIconEnabled, SettingEntry.IsNotifyIconEnabled, value); + } + public bool IsEmptyHistoryWishVisible { get => GetOption(ref isEmptyHistoryWishVisible, SettingEntry.IsEmptyHistoryWishVisible, false); diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml index 0c9cec0e..91b6db66 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml @@ -348,6 +348,12 @@ + + +