mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-14 04:19:12 +00:00
68 lines
2 KiB
C#
68 lines
2 KiB
C#
using System.Reactive;
|
|
using Avalonia;
|
|
using Avalonia.Controls.ApplicationLifetimes;
|
|
using Avalonia.Markup.Xaml;
|
|
using v2rayN.Desktop.Views;
|
|
|
|
namespace v2rayN.Desktop;
|
|
|
|
public partial class App : Application
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
AvaloniaXamlLoader.Load(this);
|
|
|
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
|
|
|
DataContext = StatusBarViewModel.Instance;
|
|
}
|
|
|
|
public override void OnFrameworkInitializationCompleted()
|
|
{
|
|
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
|
{
|
|
AppManager.Instance.InitComponents();
|
|
|
|
desktop.Exit += OnExit;
|
|
desktop.MainWindow = new MainWindow();
|
|
}
|
|
|
|
base.OnFrameworkInitializationCompleted();
|
|
}
|
|
|
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
{
|
|
if (e.ExceptionObject != null)
|
|
{
|
|
Logging.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
|
|
}
|
|
}
|
|
|
|
private void TaskScheduler_UnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e)
|
|
{
|
|
Logging.SaveLog("TaskScheduler_UnobservedTaskException", e.Exception);
|
|
}
|
|
|
|
private void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs e)
|
|
{
|
|
}
|
|
|
|
private async void MenuAddServerViaClipboardClick(object? sender, EventArgs e)
|
|
{
|
|
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
|
{
|
|
if (desktop.MainWindow != null)
|
|
{
|
|
AppEvents.AddServerViaClipboardRequested.Publish();
|
|
await Task.Delay(1000);
|
|
}
|
|
}
|
|
}
|
|
|
|
private async void MenuExit_Click(object? sender, EventArgs e)
|
|
{
|
|
await AppManager.Instance.AppExitAsync(false);
|
|
AppManager.Instance.Shutdown(true);
|
|
}
|
|
}
|