Files
RedBookPlayer/RedBookPlayer.GUI/App.xaml.cs
2021-08-05 21:05:20 -07:00

51 lines
1.6 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using RedBookPlayer.GUI.ViewModels;
using RedBookPlayer.GUI.Views;
namespace RedBookPlayer
{
public class App : Application
{
public static MainWindow MainWindow;
public static SettingsViewModel Settings;
/// <summary>
/// Read-only access to the current player view
/// </summary>
public static PlayerView PlayerView => MainWindow?.ViewModel?.PlayerView;
static App() =>
Directory.SetCurrentDirectory(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName));
public override void Initialize()
{
AppDomain.CurrentDomain.UnhandledException += (e, f) =>
{
Console.WriteLine(((Exception)f.ExceptionObject).ToString());
};
Settings = SettingsViewModel.Load("settings.json");
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
if(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
MainWindow = new MainWindow();
desktop.MainWindow = MainWindow;
desktop.ShutdownMode = ShutdownMode.OnMainWindowClose;
PlayerView.ViewModel.ApplyTheme(Settings.SelectedTheme);
}
base.OnFrameworkInitializationCompleted();
}
}
}