TimeTravel

This commit is contained in:
2022-01-31 23:13:39 +01:00
parent 80570d8895
commit c2dcb49016
78 changed files with 2294 additions and 363 deletions

View File

@@ -1,8 +1,11 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using FileTime.Avalonia.Misc;
using FileTime.Avalonia.ViewModels;
using System.Linq;
namespace FileTime.Avalonia.Views
{
@@ -15,21 +18,13 @@ namespace FileTime.Avalonia.Views
{
if (value != DataContext)
{
if (DataContext is MainPageViewModel currentViewModel)
{
currentViewModel.FocusDefaultElement = null;
}
DataContext = value;
if (value != null)
{
//value.FocusDefaultElement = () => this.FindControl<ListBox>("CurrentItems")?.Focus();
}
}
}
}
private InputElementWrapper? _inputElementWrapper;
public MainWindow()
{
InitializeComponent();
@@ -45,12 +40,58 @@ namespace FileTime.Avalonia.Views
public async void OnKeyDown(object sender, KeyEventArgs e)
{
await ViewModel?.ProcessKeyDown(e.Key, e.KeyModifiers);
if (_inputElementWrapper == null)
{
e.Handled = e.Handled || await ViewModel?.ProcessKeyDown(e.Key, e.KeyModifiers);
}
}
public async void OnKeyUp(object sender, KeyEventArgs e)
{
await ViewModel?.ProcessKeyUp(e.Key, e.KeyModifiers);
if (_inputElementWrapper == null)
{
e.Handled = e.Handled || await ViewModel?.ProcessKeyUp(e.Key, e.KeyModifiers);
}
}
private void InputText_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter && _inputElementWrapper == ViewModel!.Inputs.Last())
{
ViewModel.ProcessInputs();
_inputElementWrapper = null;
e.Handled = true;
}
else if (e.Key == Key.Escape && _inputElementWrapper == ViewModel!.Inputs.Last())
{
ViewModel.CancelInputs();
_inputElementWrapper = null;
e.Handled = true;
}
}
private void InputText_GotFocus(object sender, GotFocusEventArgs e)
{
if (sender is TextBox inputText && inputText.DataContext is InputElementWrapper inputElementWrapper)
{
_inputElementWrapper = inputElementWrapper;
}
}
private void InputText_LostFocus(object sender, RoutedEventArgs e)
{
if (sender is TextBox inputText && inputText.DataContext is InputElementWrapper inputElementWrapper)
{
_inputElementWrapper = null;
}
}
private void InputText_AttachedToVisualTree(object? sender, VisualTreeAttachmentEventArgs args)
{
if (sender is TextBox inputText && inputText.DataContext is InputElementWrapper inputElementWrapper && inputElementWrapper == ViewModel!.Inputs.First())
{
inputText.Focus();
}
}
}
}