using System; using System.Linq; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.VisualTree; using ClaudeDo.Ui.ViewModels; namespace ClaudeDo.Ui.Views; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } protected override async void OnOpened(EventArgs e) { base.OnOpened(e); if (DataContext is MainWindowViewModel vm) await vm.InitializeAsync(); } private void OnGlobalKeyDown(object? sender, KeyEventArgs e) { if (DataContext is not MainWindowViewModel vm) return; var ctrl = e.KeyModifiers.HasFlag(KeyModifiers.Control); var shift = e.KeyModifiers.HasFlag(KeyModifiers.Shift); if (ctrl && shift && e.Key == Key.N) { vm.AddListCommand.Execute(null); e.Handled = true; } else if (ctrl && e.Key == Key.N) { var taskListView = this.GetVisualDescendants().OfType().FirstOrDefault(); taskListView?.FocusInlineAdd(); e.Handled = true; } else if (ctrl && e.Key == Key.L) { this.FindControl("ListsBox")?.Focus(); e.Handled = true; } else if (ctrl && e.Key == Key.R) { if (vm.TaskList.SelectedTask is { } task) { task.RunNowCommand.Execute(null); e.Handled = true; } } } private void OnListItemDoubleTapped(object? sender, TappedEventArgs e) { if (DataContext is MainWindowViewModel vm) vm.EditListCommand.Execute(null); } private void OnListItemPointerPressed(object? sender, PointerPressedEventArgs e) { var props = e.GetCurrentPoint(this).Properties; if (!props.IsRightButtonPressed) return; if (sender is Grid { DataContext: ListItemViewModel item } && DataContext is MainWindowViewModel vm) { vm.SelectedList = item; } } }