private void HandleSharedInput(KeyEventArgs e) { SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = e.KeyModifiers.HasFlag(KeyModifiers.Control); bool isAltDown = e.KeyModifiers.HasFlag(KeyModifiers.Alt); switch (e.Key) { case Key.K: if (isCtrlDown && !isAltDown) { viewModel.AddKanjiItemCommand.Execute(null); } break; case Key.V: if (isCtrlDown && !isAltDown) { viewModel.AddVocabItemCommand.Execute(null); } break; case Key.I: if (isCtrlDown) { viewModel.ImportCommand.Execute(null); } break; } }
private void HandleDashboardInput(KeyEventArgs e) { KeyboardDevice keyboardDevice = e.KeyboardDevice; SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = keyboardDevice.IsKeyDown(Key.LeftCtrl) || keyboardDevice.IsKeyDown(Key.RightCtrl); switch (e.Key) { case Key.Enter: if (isCtrlDown) { viewModel.StartReviewsCommand.Execute(null); } break; case Key.B: if (isCtrlDown) { viewModel.SwitchToSimpleFilterCommand.Execute(null); e.Handled = true; } break; } }
private void HandleSharedInput(KeyEventArgs e) { KeyboardDevice keyboardDevice = e.KeyboardDevice; SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = keyboardDevice.IsKeyDown(Key.LeftCtrl) || keyboardDevice.IsKeyDown(Key.RightCtrl); bool isAltDown = keyboardDevice.IsKeyDown(Key.LeftAlt) || keyboardDevice.IsKeyDown(Key.LeftAlt); switch (e.Key) { case Key.K: if (isCtrlDown && !isAltDown) { viewModel.AddKanjiItemCommand.Execute(null); } break; case Key.V: if (isCtrlDown && !isAltDown) { viewModel.AddVocabItemCommand.Execute(null); } break; case Key.I: if (isCtrlDown) { viewModel.ImportCommand.Execute(null); } break; } }
/// <summary> /// Since a <see cref="GalaSoft.MvvmLight.Command.RelayCommand"/> does not accept keyboard shortcuts, /// we have to manually invoke the commands on a keyboard event. /// </summary> private void OnKeyDown(object sender, KeyEventArgs e) { SrsViewModel viewModel = ((SrsViewModel)DataContext); switch (viewModel.ControlMode) { case SrsViewModel.ControlModeEnum.Dashboard: HandleDashboardInput(e); break; case SrsViewModel.ControlModeEnum.SimpleFilter: HandleSimpleFilterInput(e); break; } HandleSharedInput(e); }
private void HandleDashboardInput(KeyEventArgs e) { SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = e.KeyModifiers.HasFlag(KeyModifiers.Control); switch (e.Key) { case Key.Enter: if (isCtrlDown) { viewModel.StartReviewsCommand.Execute(null); } break; case Key.B: if (isCtrlDown) { viewModel.SwitchToSimpleFilterCommand.Execute(null); e.Handled = true; } break; } }
public SrsPage() { InitializeComponent(); DataContext = new SrsViewModel(); }
private void HandleSimpleFilterInput(KeyEventArgs e) { SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = e.KeyModifiers.HasFlag(KeyModifiers.Control); bool isAltDown = e.KeyModifiers.HasFlag(KeyModifiers.Alt); switch (e.Key) { case Key.Home: // Apparently, the CommandTextBox eats CTRL+Home, so we have to add an Alt. if (isCtrlDown && isAltDown) { viewModel.SwitchToDashboardCommand.Execute(null); e.Handled = true; } break; case Key.F5: viewModel.FilterVm.RefreshCommand.Execute(null); e.Handled = true; break; case Key.A: // We can't just use CTRL+A here, because that would not work if a text box had focus. if (isCtrlDown && isAltDown) { viewModel.FilterVm.BrowseAllItemsCommand.Execute(null); e.Handled = true; } break; case Key.M: { if (isCtrlDown) { //from https://github.com/AvaloniaUI/Avalonia/issues/2505 var filterTextBox = ((IControl)FilterControl.MeaningFilter.GetVisualChildren().FirstOrDefault())?.FindControl <CommandTextBox>("FilterTextBox"); filterTextBox.Focus(); e.Handled = true; } break; } case Key.R: { if (isCtrlDown) { var filterTextBox = ((IControl)FilterControl.ReadingFilter.GetVisualChildren().FirstOrDefault())?.FindControl <CommandTextBox>("FilterTextBox"); filterTextBox.Focus(); e.Handled = true; } break; } case Key.T: { if (isCtrlDown) { var filterTextBox = ((IControl)FilterControl.TagFilter.GetVisualChildren().FirstOrDefault())?.FindControl <CommandTextBox>("FilterTextBox"); filterTextBox.Focus(); e.Handled = true; } break; } case Key.K: if (isCtrlDown && isAltDown) { viewModel.FilterVm.TypeFilterVm.IsKanjiItemEnabled = !viewModel.FilterVm.TypeFilterVm.IsKanjiItemEnabled; } break; case Key.V: if (isCtrlDown && isAltDown) { viewModel.FilterVm.TypeFilterVm.IsVocabItemEnabled = !viewModel.FilterVm.TypeFilterVm.IsVocabItemEnabled; } break; } }
public SrsPage() { InitializeComponent(); DataContext = new SrsViewModel(); this.GetObservable(IsVisibleProperty).Subscribe(OnIsVisibleChanged); }
private void HandleSimpleFilterInput(KeyEventArgs e) { KeyboardDevice keyboardDevice = e.KeyboardDevice; SrsViewModel viewModel = ((SrsViewModel)DataContext); bool isCtrlDown = keyboardDevice.IsKeyDown(Key.LeftCtrl) || keyboardDevice.IsKeyDown(Key.RightCtrl); bool isAltDown = keyboardDevice.IsKeyDown(Key.LeftAlt) || keyboardDevice.IsKeyDown(Key.LeftAlt); switch (e.Key) { case Key.Home: // Apparently, the CommandTextBox eats CTRL+Home, so we have to add an Alt. if (isCtrlDown && isAltDown) { viewModel.SwitchToDashboardCommand.Execute(null); e.Handled = true; } break; case Key.F5: viewModel.FilterVm.RefreshCommand.Execute(null); e.Handled = true; break; case Key.A: // We can't just use CTRL+A here, because that would not work if a text box had focus. if (isCtrlDown && isAltDown) { viewModel.FilterVm.BrowseAllItemsCommand.Execute(null); e.Handled = true; } break; case Key.M: { if (isCtrlDown) { var filterTextBox = (CommandTextBox)FilterControl.MeaningFilter.Template.FindName("FilterTextBox", FilterControl.MeaningFilter); filterTextBox.Focus(); e.Handled = true; } break; } case Key.R: { if (isCtrlDown) { var filterTextBox = (CommandTextBox)FilterControl.ReadingFilter.Template.FindName("FilterTextBox", FilterControl.ReadingFilter); filterTextBox.Focus(); e.Handled = true; } break; } case Key.T: { if (isCtrlDown) { var filterTextBox = (CommandTextBox)FilterControl.TagFilter.Template.FindName("FilterTextBox", FilterControl.TagFilter); filterTextBox.Focus(); e.Handled = true; } break; } case Key.K: if (isCtrlDown && isAltDown) { viewModel.FilterVm.TypeFilterVm.IsKanjiItemEnabled = !viewModel.FilterVm.TypeFilterVm.IsKanjiItemEnabled; } break; case Key.V: if (isCtrlDown && isAltDown) { viewModel.FilterVm.TypeFilterVm.IsVocabItemEnabled = !viewModel.FilterVm.TypeFilterVm.IsVocabItemEnabled; } break; } }