2026-06-15 10:28:16 +08:00
|
|
|
using Avalonia.Input;
|
2026-06-15 11:24:48 +08:00
|
|
|
using Avalonia.Interactivity;
|
2026-06-02 18:53:31 +08:00
|
|
|
using Footwear_Test_methodsfor_wholeshoe_Slipresistanceperformance.ViewModels;
|
2026-06-15 10:28:16 +08:00
|
|
|
using Footwear_Test_methodsfor_wholeshoe_Slipresistanceperformance.Services;
|
|
|
|
|
using Footwear_Test_methodsfor_wholeshoe_Slipresistanceperformance.Models;
|
2026-06-02 17:41:53 +08:00
|
|
|
using SukiUI.Controls;
|
2026-06-02 18:14:01 +08:00
|
|
|
using System;
|
2026-06-15 10:28:16 +08:00
|
|
|
using System.Threading.Tasks;
|
2026-06-02 17:41:53 +08:00
|
|
|
|
|
|
|
|
namespace Footwear_Test_methodsfor_wholeshoe_Slipresistanceperformance.Views
|
|
|
|
|
{
|
|
|
|
|
public partial class MainWindow : SukiWindow
|
|
|
|
|
{
|
2026-06-15 10:28:16 +08:00
|
|
|
private readonly MachineLicenseService licenseService;
|
|
|
|
|
private bool isLicenseWindowOpen;
|
|
|
|
|
|
|
|
|
|
public MainWindow() : this(new MachineLicenseService())
|
2026-06-02 17:41:53 +08:00
|
|
|
{
|
2026-06-15 10:28:16 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public MainWindow(MachineLicenseService licenseService)
|
|
|
|
|
{
|
|
|
|
|
this.licenseService = licenseService;
|
2026-06-02 17:41:53 +08:00
|
|
|
InitializeComponent();
|
2026-06-02 18:14:01 +08:00
|
|
|
Closed += OnClosed;
|
2026-06-15 11:24:48 +08:00
|
|
|
AddHandler(KeyDownEvent, OnKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true);
|
2026-06-15 10:28:16 +08:00
|
|
|
DataContextChanged += OnDataContextChanged;
|
2026-06-02 18:14:01 +08:00
|
|
|
}
|
|
|
|
|
|
2026-06-03 15:35:55 +08:00
|
|
|
private void OnClosed(object? sender, EventArgs e)
|
2026-06-02 18:14:01 +08:00
|
|
|
{
|
|
|
|
|
if (DataContext is MainWindowViewModel viewModel)
|
|
|
|
|
{
|
|
|
|
|
viewModel.Dispose();
|
|
|
|
|
}
|
2026-06-02 17:41:53 +08:00
|
|
|
}
|
2026-06-15 10:28:16 +08:00
|
|
|
|
|
|
|
|
private void OnDataContextChanged(object? sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (DataContext is MainWindowViewModel viewModel)
|
|
|
|
|
{
|
|
|
|
|
viewModel.LicenseLockRequested -= OnLicenseLockRequested;
|
|
|
|
|
viewModel.LicenseLockRequested += OnLicenseLockRequested;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnKeyDown(object? sender, KeyEventArgs e)
|
|
|
|
|
{
|
2026-06-15 11:24:48 +08:00
|
|
|
if (e.Key == Key.L
|
2026-06-15 10:28:16 +08:00
|
|
|
&& e.KeyModifiers.HasFlag(KeyModifiers.Control)
|
2026-06-15 11:24:48 +08:00
|
|
|
&& e.KeyModifiers.HasFlag(KeyModifiers.Alt)
|
2026-06-15 10:28:16 +08:00
|
|
|
&& e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
|
|
|
|
{
|
|
|
|
|
e.Handled = true;
|
|
|
|
|
_ = ShowAdministrationAsync();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnLicenseLockRequested(string message) => _ = ShowLicenseLockAsync(message);
|
|
|
|
|
|
|
|
|
|
private async Task ShowAdministrationAsync()
|
|
|
|
|
{
|
|
|
|
|
if (isLicenseWindowOpen)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isLicenseWindowOpen = true;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var window = new LicenseWindow(licenseService, LicenseWindowMode.Administration, "验证管理密码后可修改两次密码和时效。");
|
|
|
|
|
await window.ShowDialog(this);
|
|
|
|
|
if (DataContext is MainWindowViewModel viewModel)
|
|
|
|
|
{
|
|
|
|
|
viewModel.RefreshLicenseState();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
isLicenseWindowOpen = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task ShowLicenseLockAsync(string message)
|
|
|
|
|
{
|
|
|
|
|
if (isLicenseWindowOpen)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isLicenseWindowOpen = true;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var check = licenseService.Check();
|
|
|
|
|
var mode = check.State == LicenseCheckState.Expired
|
|
|
|
|
? LicenseWindowMode.Unlock
|
|
|
|
|
: LicenseWindowMode.Blocked;
|
|
|
|
|
var window = new LicenseWindow(licenseService, mode, message);
|
|
|
|
|
await window.ShowDialog(this);
|
|
|
|
|
if (!window.Succeeded)
|
|
|
|
|
{
|
|
|
|
|
Close();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (DataContext is MainWindowViewModel viewModel)
|
|
|
|
|
{
|
|
|
|
|
viewModel.RefreshLicenseState();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
isLicenseWindowOpen = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-06-02 17:41:53 +08:00
|
|
|
}
|
|
|
|
|
}
|