mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
79 lines
2.9 KiB
C#
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();
|
|
}
|
|
}
|
|
} |