This commit is contained in:
2026-09-26 12:11:20 +07:00
parent 7baeb0dfed
commit 9c4f8d748f
23 changed files with 965 additions and 74 deletions
+62
View File
@@ -0,0 +1,62 @@
using HearingProtector.Extensions;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
namespace HearingProtector;
public sealed partial class MainWindow : Window
{
// Флаг: true, когда пользователь выбрал «Выход» в трее
internal bool ReadyToClose { get; set; }
public MainWindow()
{
InitializeComponent();
this.SetMicaStyle(AppTitleBar, new(400, 300), false, false);
VersionText.Text = $"v{App.Version}";
AppWindow.Changed += AppWindow_Changed;
AppWindow.Closing += AppWindow_Closing;
}
private void AppWindow_Changed(AppWindow sender, AppWindowChangedEventArgs args)
{
if (!args.DidPresenterChange) return;
if (sender.Presenter is OverlappedPresenter p &&
p.State == OverlappedPresenterState.Minimized)
{
MinimizeToTray();
}
}
private void AppWindow_Closing(AppWindow sender, AppWindowClosingEventArgs args)
{
// Если пользователь явно выбрал «Выход» — пропускаем закрытие насквозь.
if (ReadyToClose) return;
// Иначе крестик/Alt+F4 сворачивают окно в трей, а не закрывают приложение.
args.Cancel = true;
MinimizeToTray();
}
public void MinimizeToTray()
{
AppWindow.IsShownInSwitchers = false;
AppWindow.Hide();
}
public void RestoreFromTray()
{
AppWindow.Show();
AppWindow.IsShownInSwitchers = true;
if (AppWindow.Presenter is OverlappedPresenter p &&
p.State == OverlappedPresenterState.Minimized)
{
p.Restore();
}
Activate();
}
}