76 lines
2.0 KiB
C#
76 lines
2.0 KiB
C#
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<TaskListView>().FirstOrDefault();
|
|
taskListView?.FocusInlineAdd();
|
|
e.Handled = true;
|
|
}
|
|
else if (ctrl && e.Key == Key.L)
|
|
{
|
|
this.FindControl<ListBox>("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;
|
|
}
|
|
}
|
|
}
|