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

79 lines
2.9 KiB
C#
Raw Normal View History

2020-04-09 04:18:29 +01:00
using System;
using Aaru.Gui.ViewModels;
2020-04-09 02:26:04 +01:00
using Aaru.Gui.Views;
using Avalonia;
2020-04-09 04:18:29 +01:00
using Avalonia.Controls;
2020-04-09 02:26:04 +01:00
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
namespace Aaru.Gui
{
public class App : Application
{
2020-04-09 03:28:08 +01:00
public override void Initialize() => AvaloniaXamlLoader.Load(this);
2020-04-09 02:26:04 +01:00
public override void OnFrameworkInitializationCompleted()
{
2020-04-09 03:28:08 +01:00
if(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
2020-04-09 02:26:04 +01:00
{
var splashWindow = new SplashWindow();
var swvm = new SplashWindowViewModel(splashWindow);
swvm.WorkFinished += OnSplashFinished;
splashWindow.DataContext = swvm;
desktop.MainWindow = splashWindow;
2020-04-09 02:26:04 +01:00
}
base.OnFrameworkInitializationCompleted();
}
2020-04-09 04:18:29 +01:00
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
2020-04-10 01:10:55 +01:00
desktop.MainWindow = new MainWindow();
desktop.MainWindow.DataContext = new MainWindowViewModel(desktop.MainWindow as MainWindow);
2020-04-09 04:18:29 +01:00
desktop.MainWindow.Show();
// Now can close when all windows are closed
desktop.ShutdownMode = ShutdownMode.OnLastWindowClose;
}
2020-04-10 01:10:55 +01:00
void OnAboutClicked(object sender, EventArgs args)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ||
!(desktop.MainWindow is MainWindow mainWindow) ||
!(mainWindow.DataContext is MainWindowViewModel mainWindowViewModel))
return;
mainWindowViewModel.ExecuteAboutCommand();
}
2020-04-10 19:11:19 +01:00
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();
}
2020-04-09 02:26:04 +01:00
}
2020-04-09 03:28:08 +01:00
}