--- /dev/null
+// --------------------------------------------------------------------------------------------------------------------
+// <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
+ }
+}
--- /dev/null
+// --------------------------------------------------------------------------------------------------------------------
+// <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;
+ }
+}
<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
/// 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
using System.Linq;\r
using System.Threading;\r
using System.Windows;\r
+ using System.Windows.Input;\r
\r
using Caliburn.Micro;\r
\r
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
break;\r
}\r
\r
+ // Setup Commands\r
+ this.QueueCommand = new QueueCommands(this.QueueViewModel);\r
+\r
HandBrakeInstanceManager.Init();\r
}\r
\r
\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
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