krona-staff/apps/KronaStaffTerminal/MainWindow.xaml.cs
Ochenstarik b88ff9195c
Some checks are pending
ci / verify (push) Waiting to run
fix: harden terminal scanner and background operation
2026-09-18 00:49:34 +07:00

79 lines
2.3 KiB
C#

using Microsoft.UI.Xaml;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace KronaStaffTerminal;
/// <summary>
/// The application window. This hosts a Frame that displays pages. Add your
/// UI and logic to MainPage.xaml / MainPage.xaml.cs instead of here so you
/// can use Page features such as navigation events and the Loaded lifecycle.
/// </summary>
public sealed partial class MainWindow : Window
{
private bool _allowClose;
public MainWindow()
{
InitializeComponent();
ExtendsContentIntoTitleBar = true;
SetTitleBar(AppTitleBar);
AppWindow.SetIcon("Assets/AppIcon.ico");
AppWindow.Resize(new Windows.Graphics.SizeInt32(1120, 760));
AppWindow.Closing += AppWindow_Closing;
AppWindow.Changed += AppWindow_Changed;
// Navigate the root frame to the main page on startup.
RootFrame.Navigate(typeof(MainPage));
}
private void AppWindow_Closing(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowClosingEventArgs args)
{
if (_allowClose) return;
args.Cancel = true;
if (RootFrame.Content is MainPage page) page.LockAdminSession();
AppWindow.Hide();
((App)Application.Current).NotifyMinimizedToTray();
}
private void AppWindow_Changed(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowChangedEventArgs args)
{
if (!args.DidPresenterChange ||
sender.Presenter is not Microsoft.UI.Windowing.OverlappedPresenter presenter ||
presenter.State != Microsoft.UI.Windowing.OverlappedPresenterState.Minimized)
{
return;
}
if (RootFrame.Content is MainPage page) page.LockAdminSession();
}
public void ShowWindow()
{
AppWindow.Show();
Activate();
}
public void HideToTray()
{
if (RootFrame.Content is MainPage page) page.LockAdminSession();
AppWindow.Hide();
}
public async Task RequestExitAsync()
{
if (RootFrame.Content is MainPage page && await page.AuthorizeExitAsync())
{
((App)Application.Current).CompleteExit();
}
}
public void ExitApplication()
{
_allowClose = true;
Close();
}
}