Native tray icon implementation.

This commit is contained in:
Burak Kaan Köse
2026-03-20 12:43:09 +01:00
parent 4a20ea2577
commit 1fe569e0ac
8 changed files with 642 additions and 92 deletions
+21
View File
@@ -1,13 +1,17 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Wino.Core.Domain.Interfaces;
using Wino.Mail.WinUI.Interfaces;
using WinUIEx;
namespace Wino.Mail.WinUI;
public sealed partial class WelcomeWindow : WindowEx
{
private bool _allowClose;
public Frame GetRootFrame() => RootFrame;
public WelcomeWindow()
@@ -20,6 +24,7 @@ public sealed partial class WelcomeWindow : WindowEx
this.SetIcon("Assets/Wino_Icon.ico");
ConfigureWindowChrome();
AppWindow.Closing += OnAppWindowClosing;
}
private void ConfigureWindowChrome()
@@ -34,4 +39,20 @@ public sealed partial class WelcomeWindow : WindowEx
var themeService = WinoApplication.Current.Services.GetService<INewThemeService>();
themeService?.UpdateSystemCaptionButtonColors();
}
private void OnAppWindowClosing(object sender, AppWindowClosingEventArgs e)
{
if (_allowClose || (Application.Current as App)?.IsExiting == true)
return;
e.Cancel = true;
var windowManager = WinoApplication.Current.Services.GetService<IWinoWindowManager>();
windowManager?.HideWindow(this);
}
public void AllowClose()
{
_allowClose = true;
}
}