69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using FluentTerminal.App.Services;
|
|
using FluentTerminal.App.ViewModels.Settings;
|
|
using FluentTerminal.Models;
|
|
using GalaSoft.MvvmLight.Command;
|
|
using Windows.System;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
|
|
namespace FluentTerminal.App.Views
|
|
{
|
|
public sealed partial class CreateKeyBindingDialog : ContentDialog
|
|
{
|
|
public static readonly DependencyProperty KeyBindingProperty =
|
|
DependencyProperty.Register(nameof(KeyBinding), typeof(KeyBindingViewModel), typeof(CreateKeyBindingDialog), new PropertyMetadata(null));
|
|
|
|
private readonly IDialogService _dialogService;
|
|
|
|
public CreateKeyBindingDialog(IDialogService dialogService)
|
|
{
|
|
_dialogService = dialogService;
|
|
InitializeComponent();
|
|
ResetCommand = new RelayCommand(Reset);
|
|
PreviewKeyDown += RegisterKeyBindingDialog_PreviewKeyDown;
|
|
Reset();
|
|
}
|
|
|
|
public KeyBindingViewModel KeyBinding
|
|
{
|
|
get { return (KeyBindingViewModel)GetValue(KeyBindingProperty); }
|
|
set { SetValue(KeyBindingProperty, value); }
|
|
}
|
|
|
|
public RelayCommand ResetCommand { get; }
|
|
|
|
private void OnResetButtonPreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
|
|
{
|
|
e.Handled = true;
|
|
}
|
|
|
|
private void RegisterKeyBindingDialog_PreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
|
|
{
|
|
switch (e.Key)
|
|
{
|
|
case VirtualKey.Control:
|
|
KeyBinding.Ctrl = true;
|
|
break;
|
|
|
|
case VirtualKey.Shift:
|
|
KeyBinding.Shift = true;
|
|
break;
|
|
|
|
case VirtualKey.Menu:
|
|
KeyBinding.Alt = true;
|
|
break;
|
|
|
|
default:
|
|
KeyBinding.Key = (int)e.Key;
|
|
break;
|
|
}
|
|
ResetButton.Visibility = Visibility.Visible;
|
|
}
|
|
|
|
private void Reset()
|
|
{
|
|
KeyBinding = new KeyBindingViewModel(new KeyBinding(), _dialogService);
|
|
ResetButton.Visibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
} |