using System; using Avalonia.Interactivity; using detect.gui.Classes; using detect.gui.ViewModels; using detect.gui.Views; using Avalonia; using ReactiveUI; using Avalonia.Controls.Primitives; using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.Threading; namespace detect.gui.Views; public partial class MainView : WindowBase { public WebBrowserWindow WebWindow { get; set; } public MainView() { InitializeComponent(); WebWindow = new WebBrowserWindow(); this.WhenAnyValue(x => x.ViewModel).Subscribe(v => { if (v == null) return; v.Router.Navigate.Execute(new LoginViewModel()); }); this.WhenAnyValue(x => x.WindowState).Subscribe(s => { Dispatcher.UIThread.InvokeAsync(() => { // if (s == WindowState.Minimized || !(DataContext as MainViewModel)!.IsHomeView) // WebWindow.Hide(); // if (s != WindowState.Minimized && (DataContext as MainViewModel)!.IsSettingsView && !WebWindow.IsVisible) // WebWindow.Show(); }); }); } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); #if DEBUG this.AttachDevTools(); #endif } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); NotificationService.SetHostWindow(this); } private void MinClick(object? sender, RoutedEventArgs e) { WindowState = WindowState.Minimized; } private void MaxClick(object? sender, RoutedEventArgs e) { WindowState = WindowState.Maximized; } private void RestoreClick(object? sender, RoutedEventArgs e) { WindowState = WindowState.Normal; } private void CloseClick(object? sender, RoutedEventArgs e) { Close(); } private void OnClosing(object? sender, WindowClosingEventArgs e) { WebWindow.Close(); } }