Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
 public SrsPage()
 {
     InitializeComponent();
     DataContext = new SrsViewModel();
 }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
 public SrsPage()
 {
     InitializeComponent();
     DataContext = new SrsViewModel();
     this.GetObservable(IsVisibleProperty).Subscribe(OnIsVisibleChanged);
 }
Ejemplo n.º 9
0
        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;
            }
        }