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
|
|
|
|
{
|
2020-04-10 22:33:27 +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();
|
|
|
|
|
|
}
|
2020-04-10 22:33:27 +01:00
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|