using Avalonia; using Avalonia.Animation; using Avalonia.Animation.Easings; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using Avalonia.Media; using Avalonia.Styling; using LanMountainDesktop.Launcher.Models; using LanMountainDesktop.Launcher.Resources; using LanMountainDesktop.Launcher.Services; namespace LanMountainDesktop.Launcher.Views; internal partial class DataLocationPromptWindow : Window { private readonly TaskCompletionSource _completionSource = new(); private readonly DataLocationResolver _resolver; private bool _isTransitioning; public DataLocationPromptWindow() { AvaloniaXamlLoader.Load(this); Loaded += OnWindowLoaded; Opened += OnWindowOpened; _resolver = new DataLocationResolver(AppContext.BaseDirectory); } internal DataLocationPromptWindow(DataLocationResolver resolver) { AvaloniaXamlLoader.Load(this); Loaded += OnWindowLoaded; Opened += OnWindowOpened; _resolver = resolver; } private void OnWindowLoaded(object? sender, RoutedEventArgs e) { BindControls(); UpdateUiState(); } private void BindControls() { var systemRadio = this.FindControl("SystemRadio"); var portableRadio = this.FindControl("PortableRadio"); var confirmButton = this.FindControl