using System; using System.Reactive.Disposables; using Avalonia; using Avalonia.Markup.Xaml; using Avalonia.Platform; using Avalonia.ReactiveUI; using DesertPaintCodex.ViewModels; using ReactiveUI; namespace DesertPaintCodex.Views { public class WelcomeView : ReactiveWindow { public WelcomeView() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif // Extract some reasonable screen defaults. IScreenImpl screenInfo = PlatformImpl.Screen; for (int i = 0; i < screenInfo.ScreenCount; i++) { Screen screen = screenInfo.AllScreens[i]; if (!screen.Primary) continue; Util.Constants.DefaultScreenWidth = screen.Bounds.Width; Util.Constants.DefaultScreenHeight = screen.Bounds.Height; Util.Constants.DefaultScreenX = screen.Bounds.X; Util.Constants.DefaultScreenY = screen.Bounds.Y; break; } // Make this window draggable. PointerPressed += (_, e) => { PlatformImpl?.BeginMoveDrag(e); }; // Handle the close command. this.WhenActivated(disposables=> { ViewModel?.FinishWelcome.Subscribe(_ => Close()).DisposeWith(disposables); }); } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } } }