44 lines
919 B
C#
44 lines
919 B
C#
using System;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using SpotXInstaller.ViewModels;
|
|
|
|
namespace SpotXInstaller.Views;
|
|
|
|
public partial class MainWindow : Window
|
|
{
|
|
private bool _allowClose;
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
|
|
Closing += MainWindow_Closing;
|
|
}
|
|
|
|
private async void MainWindow_Closing(
|
|
object? sender,
|
|
WindowClosingEventArgs e)
|
|
{
|
|
if (_allowClose)
|
|
return;
|
|
|
|
if (DataContext is not MainViewModel vm)
|
|
return;
|
|
|
|
if (!vm.IsInstalling)
|
|
return;
|
|
|
|
// Не закрываем окно мгновенно.
|
|
// Сначала отменяем установку и убиваем process tree.
|
|
e.Cancel = true;
|
|
|
|
await vm.CancelInstallationAsync();
|
|
|
|
_allowClose = true;
|
|
|
|
Close();
|
|
}
|
|
}
|
|
|