|
|
|
|
@ -7,6 +7,10 @@ using Avalonia; |
|
|
|
|
using Avalonia.Controls; |
|
|
|
|
using Avalonia.Controls.ApplicationLifetimes; |
|
|
|
|
using Avalonia.Markup.Xaml; |
|
|
|
|
using Lib.Logging.Factories; |
|
|
|
|
using Lib.Logging.Interfaces; |
|
|
|
|
using Lib.Logging.Loggers.Factories; |
|
|
|
|
using Lib.Logging.Loggers.Interfaces; |
|
|
|
|
using Lib.NotifyIcon; |
|
|
|
|
using LightweightIocContainer.Interfaces; |
|
|
|
|
using Mystify.ViewModels; |
|
|
|
|
@ -18,7 +22,12 @@ namespace Mystify |
|
|
|
|
public class App : Application |
|
|
|
|
{ |
|
|
|
|
private IIocContainer? _kernel; |
|
|
|
|
|
|
|
|
|
private ILog? _log; |
|
|
|
|
private ILoggerInitializer? _loggerInitializer; |
|
|
|
|
|
|
|
|
|
private INotifyIcon? _notifyIcon; |
|
|
|
|
|
|
|
|
|
private MainWindow? _mainWindow; |
|
|
|
|
private MainWindowViewModel? _mainWindowViewModel; |
|
|
|
|
|
|
|
|
|
@ -31,6 +40,13 @@ namespace Mystify |
|
|
|
|
Bootstrapper bootstrapper = new(); |
|
|
|
|
_kernel = bootstrapper.BootstrapKernel(); |
|
|
|
|
|
|
|
|
|
ILogFactory logFactory = _kernel.Resolve<ILogFactory>(); |
|
|
|
|
_log = logFactory.Create(); |
|
|
|
|
|
|
|
|
|
ILoggerInitializerFactory loggerInitializerFactory = _kernel.Resolve<ILoggerInitializerFactory>(); |
|
|
|
|
_loggerInitializer = loggerInitializerFactory.Create(_log); |
|
|
|
|
_loggerInitializer.Init(); |
|
|
|
|
|
|
|
|
|
MainModel mainModel = _kernel.Resolve<MainModel>(); |
|
|
|
|
_mainWindow = new MainWindow(); |
|
|
|
|
_mainWindowViewModel = new MainWindowViewModel(mainModel, _mainWindow); |
|
|
|
|
@ -68,10 +84,17 @@ namespace Mystify |
|
|
|
|
_mainWindow?.Show(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args) |
|
|
|
|
private async void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args) //TODO: return Task? |
|
|
|
|
{ |
|
|
|
|
_mainWindow?.Close(); |
|
|
|
|
_notifyIcon?.Remove(); |
|
|
|
|
|
|
|
|
|
if (_log != null) |
|
|
|
|
await _log.DisposeAsync(); |
|
|
|
|
|
|
|
|
|
if (_loggerInitializer != null) |
|
|
|
|
await _loggerInitializer.DisposeAsync(); |
|
|
|
|
|
|
|
|
|
_kernel?.Dispose(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|