using System.Threading;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Platform;
using Avalonia.ReactiveUI;
using Avalonia.Threading;
using Avalonia.VisualTree;
using detect.gui.ViewModels;
using ReactiveUI;

namespace detect.gui.Views;

public partial class WebBrowserWindow : Window
{
    public UserControl? ParentContent { get; set; }
    
    public WebBrowserWindow()
    {
        InitializeComponent();

        DataContext = new WebViewModel();
        
        ExtendClientAreaToDecorationsHint = true;
        ExtendClientAreaChromeHints = ExtendClientAreaChromeHints.NoChrome;
        ExtendClientAreaTitleBarHeightHint = -1;
        SystemDecorations = SystemDecorations.None;
        ShowInTaskbar = false;
        Topmost = true;
        CanResize = false;
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }

    // public void InitUI(int? index = null)
    // {
    //     if (ParentContent == null) return;
    //     var timer = new Timer(_ =>
    //     {
    //         Dispatcher.UIThread.InvokeAsync(() =>
    //         {
    //             if (!ParentContent.IsAttachedToVisualTree()) return;
    //             Width = ParentContent.Get<Border>("WebView").Bounds.Width;
    //             Height = ParentContent.Get<Border>("WebView").Bounds.Height;
    //             Position = ParentContent.Get<Border>("WebView").PointToScreen(new Point(0, 0));
    //             if (index != null) 
    //                 SetAddress(index.Value);
    //             if (!IsVisible)
    //                 Show();
    //         });
    //     });
    //     timer.Change(100, 0);
    // }

    public void SetAddress(int index)
    {
        (DataContext as WebViewModel)!.SetAddress(index);
    }
}