// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // Keyboard Shortcut Processor // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrakeWPF.Commands { using System; using System.Windows; using System.Windows.Input; using Caliburn.Micro; using HandBrakeWPF.ViewModels.Interfaces; /// /// Keyboard Shortcut Processor /// public class ProcessShortcutCommand : ICommand { /// /// The Gesture /// private readonly KeyGesture gesture; /// /// Initializes a new instance of the class. /// /// /// The gesture. /// public ProcessShortcutCommand(KeyGesture gesture) { this.gesture = gesture; } /// /// Defines the method to be called when the command is invoked. /// /// Data used by the command. If the command does not require data to be passed, this object can be set to null. public void Execute(object parameter) { if (gesture != null) { IMainViewModel mainViewModel = IoC.Get(); // Start Encode (Ctrl+E) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.E) { mainViewModel.StartEncode(); } // Stop Encode (Ctrl+K) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.K) { mainViewModel.StopEncode(); } // Open Log Window (Ctrl+L) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.L) { mainViewModel.OpenLogWindow(); } // Open Queue Window (Ctrl+Q) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.Q) { mainViewModel.OpenQueueWindow(); } // Add to Queue (Ctrl+A) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.A) { mainViewModel.AddToQueueWithErrorHandling(); } // Add all to Queue (Alt+A) if (gesture.Modifiers == ModifierKeys.Alt && gesture.Key == Key.A) { mainViewModel.AddAllToQueue(); } // Add selection to Queue (Control+Shift+A) if (gesture.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && gesture.Key == Key.A) { mainViewModel.AddSelectionToQueue(); } // Scan a File (Alt+O) if (gesture.Modifiers == ModifierKeys.Alt && gesture.Key == Key.O) { mainViewModel.SelectSourceWindow(); } // Scan a File (Ctrl+O) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.O) { mainViewModel.FileScan(); } // Scan a Folder (Ctrl+Shift+O) if (gesture.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && gesture.Key == Key.O) { mainViewModel.FolderScan(); } // Launch Help (F1) if (gesture.Key == Key.F1) { mainViewModel.LaunchHelp(); } // Browse Destination (Ctrl+S) if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.S) { mainViewModel.BrowseDestination(); } // Tabs if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D1) { mainViewModel.SwitchTab(0); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D2) { mainViewModel.SwitchTab(1); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D3) { mainViewModel.SwitchTab(2); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D4) { mainViewModel.SwitchTab(3); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D5) { mainViewModel.SwitchTab(4); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D6) { mainViewModel.SwitchTab(5); } if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.D7) { mainViewModel.SwitchTab(6); } if (gesture.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && gesture.Key == Key.G) { GC.Collect(); MessageBox.Show("DEBUG: Garbage Collection Completed"); } } } /// /// Defines the method that determines whether the command can execute in its current state. /// /// /// true if this command can be executed; otherwise, false. /// /// Data used by the command. If the command does not require data to be passed, this object can be set to null. public bool CanExecute(object parameter) { return true; } /// /// Can Execute Changed /// public event EventHandler CanExecuteChanged { add { } remove { } } } }