]> granicus.if.org Git - handbrake/commitdiff
WinGui: Adding a "Queue" Menu
authorsr55 <sr55.hb@outlook.com>
Sat, 20 Feb 2016 17:28:42 +0000 (17:28 +0000)
committersr55 <sr55.hb@outlook.com>
Sat, 20 Feb 2016 17:28:42 +0000 (17:28 +0000)
win/CS/HandBrakeWPF/Commands/Menu/QueueCommandParams.cs [new file with mode: 0644]
win/CS/HandBrakeWPF/Commands/Menu/QueueCommands.cs [new file with mode: 0644]
win/CS/HandBrakeWPF/HandBrakeWPF.csproj
win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueViewModel.cs
win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
win/CS/HandBrakeWPF/Views/MainView.xaml

diff --git a/win/CS/HandBrakeWPF/Commands/Menu/QueueCommandParams.cs b/win/CS/HandBrakeWPF/Commands/Menu/QueueCommandParams.cs
new file mode 100644 (file)
index 0000000..e68b17d
--- /dev/null
@@ -0,0 +1,23 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueCommandParams.cs" company="HandBrake Project (http://handbrake.fr)">
+//   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+//   Defines the QueueCommandParams type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Commands.Menu
+{
+    /// <summary>
+    /// The queue command params.
+    /// </summary>
+    public enum QueueCommandParams
+    {
+        ClearCompleted,
+        ClearAll,
+        ClearSelected,
+        Import,
+        Export
+    }
+}
diff --git a/win/CS/HandBrakeWPF/Commands/Menu/QueueCommands.cs b/win/CS/HandBrakeWPF/Commands/Menu/QueueCommands.cs
new file mode 100644 (file)
index 0000000..2f0bb00
--- /dev/null
@@ -0,0 +1,81 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueCommands.cs" company="HandBrake Project (http://handbrake.fr)">
+//   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+//   The queue commands.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Commands.Menu
+{
+    using System;
+    using System.Windows.Input;
+
+    using HandBrakeWPF.ViewModels.Interfaces;
+
+    /// <summary>
+    /// The queue commands.
+    /// </summary>
+    public class QueueCommands : ICommand
+    {
+        /// <summary>
+        /// Gets or sets the queue view model.
+        /// </summary>
+        public IQueueViewModel QueueViewModel { get; set; }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="QueueCommands"/> class. 
+        /// </summary>
+        /// <param name="queueViewModel">
+        /// The queue View Model.
+        /// </param>
+        public QueueCommands(IQueueViewModel queueViewModel)
+        {
+            this.QueueViewModel = queueViewModel;
+        }
+
+        /// <summary>
+        /// Defines the method that determines whether the command can execute in its current state.
+        /// </summary>
+        /// <returns>
+        /// true if this command can be executed; otherwise, false.
+        /// </returns>
+        /// <param name="parameter">Data used by the command.  If the command does not require data to be passed, this object can be set to null.</param>
+        public bool CanExecute(object parameter)
+        {
+            return true;
+        }
+
+        /// <summary>
+        /// Defines the method to be called when the command is invoked.
+        /// </summary>
+        /// <param name="parameter">Data used by the command.  If the command does not require data to be passed, this object can be set to null.</param>
+        public void Execute(object parameter)
+        {
+            switch ((QueueCommandParams)parameter)
+            {
+                case QueueCommandParams.ClearAll:
+                    this.QueueViewModel.Clear();
+                    break;
+                case QueueCommandParams.ClearCompleted:
+                    this.QueueViewModel.ClearCompleted();
+                    break;
+                case QueueCommandParams.ClearSelected:
+                    this.QueueViewModel.RemoveSelectedJobs();
+                    break;
+                case QueueCommandParams.Import:
+                    this.QueueViewModel.Import();
+                    break;
+                case QueueCommandParams.Export:
+                    this.QueueViewModel.Export();
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// The can execute changed.
+        /// </summary>
+        public event EventHandler CanExecuteChanged;
+    }
+}
index 21b92b13eb1545ffdc6beb5f1358f49d47ad9160..4b4dd7b814247bd929b80d92a9075d8b268e464b 100644 (file)
     <Compile Include="Collections\SerializableDictionary.cs" />\r
     <Compile Include="Commands\InputBindingTrigger.cs" />\r
     <Compile Include="Commands\Interfaces\IAdvancedEncoderOptionsCommand.cs" />\r
+    <Compile Include="Commands\Menu\QueueCommandParams.cs" />\r
+    <Compile Include="Commands\Menu\QueueCommands.cs" />\r
     <Compile Include="Commands\OpenOptionsScreenCommand.cs" />\r
     <Compile Include="Commands\CloseOverlayPanelCommand.cs" />\r
     <Compile Include="Commands\OpenOverlayPanelCommand.cs" />\r
index 77086912204b48d8d0bd618feedacdbaff0d38bb..44d5d0f985f646a6281ef7c6b7039dc6969703e6 100644 (file)
@@ -21,5 +21,30 @@ namespace HandBrakeWPF.ViewModels.Interfaces
         /// The action.\r
         /// </param>\r
         void WhenDone(string action);\r
+\r
+        /// <summary>\r
+        /// The import.\r
+        /// </summary>\r
+        void Import();\r
+\r
+        /// <summary>\r
+        /// The export.\r
+        /// </summary>\r
+        void Export();\r
+\r
+        /// <summary>\r
+        /// The clear completed.\r
+        /// </summary>\r
+        void ClearCompleted();\r
+\r
+        /// <summary>\r
+        /// The clear.\r
+        /// </summary>\r
+        void Clear();\r
+\r
+        /// <summary>\r
+        /// The remove selected jobs.\r
+        /// </summary>\r
+        void RemoveSelectedJobs();\r
     }\r
 }
\ No newline at end of file
index 5eb792abb461cc50efdc9c303e0b5a641b74b397..0065bef6a7e428342f0b58c70ebb22839632e0b5 100644 (file)
@@ -18,6 +18,7 @@ namespace HandBrakeWPF.ViewModels
     using System.Linq;\r
     using System.Threading;\r
     using System.Windows;\r
+    using System.Windows.Input;\r
 \r
     using Caliburn.Micro;\r
 \r
@@ -25,6 +26,7 @@ namespace HandBrakeWPF.ViewModels
     using HandBrake.ApplicationServices.Utilities;\r
 \r
     using HandBrakeWPF.Commands;\r
+    using HandBrakeWPF.Commands.Menu;\r
     using HandBrakeWPF.EventArgs;\r
     using HandBrakeWPF.Factories;\r
     using HandBrakeWPF.Helpers;\r
@@ -221,6 +223,9 @@ namespace HandBrakeWPF.ViewModels
                     break;\r
             }\r
 \r
+            // Setup Commands\r
+            this.QueueCommand = new QueueCommands(this.QueueViewModel);\r
+\r
             HandBrakeInstanceManager.Init();\r
         }\r
 \r
@@ -1176,6 +1181,12 @@ namespace HandBrakeWPF.ViewModels
 \r
         #endregion\r
 \r
+        #region Commands \r
+\r
+        public ICommand QueueCommand { get; set; }\r
+\r
+        #endregion\r
+\r
         #region Load and Shutdown Handling\r
 \r
         /// <summary>\r
index ae24fb2862985a81983c91fa3cbff5faeff4b2d0..3b86fdcb3118ffab3d165850f5bce98d1eb5996c 100644 (file)
@@ -8,6 +8,7 @@
              xmlns:Properties="clr-namespace:HandBrakeWPF.Properties"\r
              xmlns:cal="http://www.caliburnproject.org"\r
              xmlns:attachedProperties="clr-namespace:HandBrakeWPF.AttachedProperties"\r
+             xmlns:menu="clr-namespace:HandBrakeWPF.Commands.Menu"\r
              AllowDrop="True"\r
         FontSize="11"\r
         cal:Message.Attach="[Event Loaded] = [Action Load]"\r
                     </MenuItem>\r
                 </MenuItem>\r
 \r
+                <MenuItem Header="_Queue" x:Name="queueMenu" Visibility="{Binding HasSource, Converter={StaticResource booleanConverter}, ConverterParameter=false}">\r
+                    <MenuItem Header="Add to Queue" cal:Message.Attach="[Event Click] = [Action AddAllToQueue]"  InputGestureText="Ctrl + A" />\r
+                    <MenuItem Header="All Selection to Queue" cal:Message.Attach="[Event Click] = [Action AddSelectionToQueue]" />\r
+                    <Separator Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <MenuItem Command="{Binding QueueCommand}" CommandParameter="{x:Static menu:QueueCommandParams.ClearCompleted}" Header="{x:Static Properties:ResourcesUI.QueueView_ClearCompleted}" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <MenuItem Command="{Binding QueueCommand}" CommandParameter="{x:Static menu:QueueCommandParams.ClearAll}" Header="{x:Static Properties:ResourcesUI.QueueView_ClearAll}" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <MenuItem Command="{Binding QueueCommand}" CommandParameter="{x:Static menu:QueueCommandParams.ClearSelected}" Header="{x:Static Properties:ResourcesUI.QueueView_ClearSelected}" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <Separator Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <MenuItem Command="{Binding QueueCommand}" CommandParameter="{x:Static menu:QueueCommandParams.Import}" Header="{x:Static Properties:ResourcesUI.QueueView_Import}" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                    <MenuItem Command="{Binding QueueCommand}" CommandParameter="{x:Static menu:QueueCommandParams.Export}" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
+                </MenuItem>\r
+\r
                 <MenuItem Header="_Help">\r
                     <MenuItem Header="_HandBrake User Guide (HTTP)" cal:Message.Attach="[Event Click] = [Action LaunchHelp]" InputGestureText="F1">\r
                         <MenuItem.Icon>\r