rework to Azaion.Suite

This commit is contained in:
Alex Bezdieniezhnykh
2024-11-21 13:41:32 +02:00
parent 2cf69f4e4e
commit 5a592e9dbf
76 changed files with 1739 additions and 882 deletions
+59
View File
@@ -0,0 +1,59 @@
using System.IO;
using System.Windows;
using Azaion.Annotator.Extensions;
using Azaion.Common.DTO.Config;
using Microsoft.Extensions.Options;
namespace Azaion.Suite;
public partial class MainSuite : Window
{
private readonly AppConfig _appConfig;
private readonly IConfigUpdater _configUpdater;
public MainSuite(IOptions<AppConfig> appConfig, IConfigUpdater configUpdater)
{
_configUpdater = configUpdater;
_appConfig = appConfig.Value;
InitializeComponent();
Loaded += OnLoaded;
Closed += OnFormClosed;
SizeChanged += async (_, _) => await SaveUserSettings();
LocationChanged += async (_, _) => await SaveUserSettings();
StateChanged += async (_, _) => await SaveUserSettings();
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
if (!Directory.Exists(_appConfig.DirectoriesConfig.LabelsDirectory))
Directory.CreateDirectory(_appConfig.DirectoriesConfig.LabelsDirectory);
if (!Directory.Exists(_appConfig.DirectoriesConfig.ImagesDirectory))
Directory.CreateDirectory(_appConfig.DirectoriesConfig.ImagesDirectory);
if (!Directory.Exists(_appConfig.DirectoriesConfig.ResultsDirectory))
Directory.CreateDirectory(_appConfig.DirectoriesConfig.ResultsDirectory);
Left = _appConfig.WindowConfig.WindowLocation.X;
Top = _appConfig.WindowConfig.WindowLocation.Y;
Width = _appConfig.WindowConfig.WindowSize.Width;
Height = _appConfig.WindowConfig.WindowSize.Height;
if (_appConfig.WindowConfig.FullScreen)
WindowState = WindowState.Maximized;
}
private async Task SaveUserSettings()
{
await ThrottleExt.Throttle(() =>
{
_configUpdater.Save(_appConfig);
return Task.CompletedTask;
}, TimeSpan.FromSeconds(5));
}
private void OnFormClosed(object? sender, EventArgs e)
{
_configUpdater.Save(_appConfig);
}
}