Files
Aaru/Aaru.Gui/App.xaml.cs

79 lines
2.9 KiB
C#

using System;
using Aaru.Gui.ViewModels;
using Aaru.Gui.Views;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
namespace Aaru.Gui
{
public class App : Application
{
public override void Initialize() => AvaloniaXamlLoader.Load(this);
public override void OnFrameworkInitializationCompleted()
{
if(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var splashWindow = new SplashWindow();
var swvm = new SplashWindowViewModel(splashWindow);
swvm.WorkFinished += OnSplashFinished;
splashWindow.DataContext = swvm;
desktop.MainWindow = splashWindow;
}
base.OnFrameworkInitializationCompleted();
}
void OnSplashFinished(object sender, EventArgs e)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop))
return;
// Ensure not exit
desktop.ShutdownMode = ShutdownMode.OnExplicitShutdown;
// Close splash window
desktop.MainWindow.Close();
// Create and show main window
desktop.MainWindow = new MainWindow();
desktop.MainWindow.DataContext = new MainWindowViewModel(desktop.MainWindow as MainWindow);
desktop.MainWindow.Show();
// Now can close when all windows are closed
desktop.ShutdownMode = ShutdownMode.OnLastWindowClose;
}
void OnAboutClicked(object sender, EventArgs args)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ||
!(desktop.MainWindow is MainWindow mainWindow) ||
!(mainWindow.DataContext is MainWindowViewModel mainWindowViewModel))
return;
mainWindowViewModel.ExecuteAboutCommand();
}
void OnQuitClicked(object sender, EventArgs args)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ||
!(desktop.MainWindow is MainWindow mainWindow) ||
!(mainWindow.DataContext is MainWindowViewModel mainWindowViewModel))
return;
mainWindowViewModel.ExecuteExitCommand();
}
void OnPreferencesClicked(object sender, EventArgs args)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ||
!(desktop.MainWindow is MainWindow mainWindow) ||
!(mainWindow.DataContext is MainWindowViewModel mainWindowViewModel))
return;
mainWindowViewModel.ExecuteSettingsCommand();
}
}
}