diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml index 1c5aca6..76ea137 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml @@ -576,7 +576,10 @@ VerticalAlignment="Center"> - + ? _logger; private readonly IModalService _modalService; private IReadOnlyCollection? _openModals; + private ReadInputsViewModel? _inputViewModel; + private IDisposable? _inputViewModelSubscription; public MainWindowViewModel? ViewModel { @@ -41,6 +43,15 @@ public partial class MainWindow : Window InitializeComponent(); ReadInputContainer.PropertyChanged += ReadInputContainerOnPropertyChanged; + DataContextChanged += (sender, args) => + { + if (DataContext is not MainWindowViewModel mainWindowViewModel) return; + + _inputViewModelSubscription?.Dispose(); + _inputViewModelSubscription = mainWindowViewModel.DialogService.ReadInput.Subscribe( + inputViewModel => _inputViewModel = inputViewModel + ); + }; } private void OnWindowOpened(object sender, EventArgs e) @@ -131,4 +142,18 @@ public partial class MainWindow : Window var vm = ViewModel; Task.Run(() => vm?.OnExit()).Wait(); } + + private void InputList_OnKeyUp(object? sender, KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + _inputViewModel?.Cancel(); + _inputViewModel = null; + } + else if (e.Key == Key.Enter) + { + _inputViewModel?.Process(); + _inputViewModel = null; + } + } } \ No newline at end of file