private string jobsPending;\r
private string whenDoneAction;\r
\r
+ private bool isQueueRunning;\r
+\r
#endregion\r
\r
#region Constructors and Destructors\r
this.JobStatus = Resources.QueueViewModel_NoJobsPending;\r
this.SelectedItems = new BindingList<QueueTask>();\r
this.DisplayName = "Queue";\r
-\r
+ this.IsQueueRunning = false;\r
+ \r
this.WhenDoneAction = this.userSettingService.GetUserSetting<string>(UserSettingConstants.WhenCompleteAction);\r
}\r
\r
#region Properties\r
\r
/// <summary>\r
- /// Gets or sets a value indicating whether IsEncoding.\r
+ /// Gets or sets a value indicating whether the Queue is paused or not..\r
/// </summary>\r
- public bool IsEncoding\r
+ public bool IsQueueRunning\r
{\r
get\r
{\r
- return this.isEncoding;\r
+ return this.isQueueRunning;\r
}\r
-\r
set\r
{\r
- this.isEncoding = value;\r
- this.NotifyOfPropertyChange(() => IsEncoding);\r
+ if (value == this.isQueueRunning) return;\r
+ this.isQueueRunning = value;\r
+ this.NotifyOfPropertyChange(() => this.IsQueueRunning);\r
}\r
}\r
\r
public override void OnLoad()\r
{\r
// Setup the window to the correct state.\r
- this.IsEncoding = this.queueProcessor.EncodeService.IsEncoding;\r
+ this.IsQueueRunning = this.queueProcessor.EncodeService.IsEncoding;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
\r
base.OnLoad();\r
}\r
\r
/// <summary>\r
- /// Pause Encode\r
+ /// Can Pause the Queue.\r
+ /// Used by Caliburn Micro to enable/disable the context menu item.\r
+ /// </summary>\r
+ /// <returns>\r
+ /// True when we can pause the queue.\r
+ /// </returns>\r
+ public bool CanPauseQueue()\r
+ {\r
+ return this.IsQueueRunning;\r
+ }\r
+\r
+ /// <summary>\r
+ /// Pause the Queue\r
/// </summary>\r
- public void PauseEncode()\r
+ public void PauseQueue()\r
{\r
this.queueProcessor.Pause();\r
\r
this.JobStatus = Resources.QueueViewModel_QueuePending;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
- this.IsEncoding = false;\r
+ this.IsQueueRunning = false;\r
\r
MessageBox.Show(Resources.QueueViewModel_QueuePauseNotice, Resources.QueueViewModel_Queue, \r
MessageBoxButton.OK, MessageBoxImage.Information);\r
}\r
\r
+ /// <summary>\r
+ /// Pause the Queue\r
+ /// </summary>\r
+ /// <remarks>\r
+ /// Prevents evaluation of CanPauseQueue\r
+ /// </remarks>\r
+ public void PauseQueueToolbar()\r
+ {\r
+ this.PauseQueue();\r
+ }\r
+\r
/// <summary>\r
/// The remove selected jobs.\r
/// </summary>\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
}\r
\r
+ /// <summary>\r
+ /// Can Start Encoding.\r
+ /// Used by Caliburn Micro to enable/disable the context menu item.\r
+ /// </summary>\r
+ /// <returns>\r
+ /// True when we can start encoding.\r
+ /// </returns>\r
+ public bool CanStartQueue()\r
+ {\r
+ return !this.IsQueueRunning;\r
+ }\r
+\r
/// <summary>\r
/// Start Encode\r
/// </summary>\r
- public void StartEncode()\r
+ public void StartQueue()\r
{\r
if (this.queueProcessor.Count == 0)\r
{\r
\r
this.JobStatus = Resources.QueueViewModel_QueueStarted;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
- this.IsEncoding = true;\r
+ this.IsQueueRunning = true;\r
\r
this.queueProcessor.Start(userSettingService.GetUserSetting<bool>(UserSettingConstants.ClearCompletedFromQueue));\r
}\r
\r
#region Methods\r
\r
+ public void Activate()\r
+ {\r
+ this.queueProcessor.QueueCompleted += this.queueProcessor_QueueCompleted;\r
+ this.queueProcessor.QueueChanged += this.QueueManager_QueueChanged;\r
+ this.queueProcessor.JobProcessingStarted += this.QueueProcessorJobProcessingStarted;\r
+\r
+ }\r
+\r
+ public void Deactivate()\r
+ {\r
+ this.queueProcessor.QueueCompleted -= this.queueProcessor_QueueCompleted;\r
+ this.queueProcessor.QueueChanged -= this.QueueManager_QueueChanged;\r
+ this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;\r
+ }\r
+\r
/// <summary>\r
/// Override the OnActive to run the Screen Loading code in the view model base.\r
/// </summary>\r
this.queueProcessor.Pause();\r
this.JobStatus = Resources.QueueViewModel_QueuePending;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
- this.IsEncoding = false;\r
+ this.IsQueueRunning = false;\r
\r
this.errorService.ShowMessageBox(\r
Resources.MainViewModel_LowDiskSpaceWarning,\r
if (!queueProcessor.IsProcessing)\r
{\r
this.JobStatus = Resources.QueueViewModel_QueueNotRunning;\r
+ this.IsQueueRunning = false;\r
}\r
}\r
\r
{\r
this.JobStatus = Resources.QueueViewModel_QueueCompleted;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
- this.IsEncoding = false;\r
+ this.IsQueueRunning = false;\r
}\r
\r
/// <summary>\r
{\r
this.JobStatus = Resources.QueueViewModel_QueueStarted;\r
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
- this.IsEncoding = true;\r
+ this.IsQueueRunning = true; \r
}\r
\r
#endregion\r
<DockPanel Background="Transparent" HorizontalAlignment="Stretch">\r
\r
<Button Name="Start" DockPanel.Dock="Left" AutomationProperties.Name="Start Queue"\r
- cal:Message.Attach="[Event Click] = [Action StartEncode]"\r
- Visibility="{Binding IsEncoding,\r
+ cal:Message.Attach="[Event Click] = [Action StartQueue]"\r
+ Visibility="{Binding IsQueueRunning,\r
Converter={StaticResource boolToVisConverter},\r
ConverterParameter=true}">\r
<StackPanel Orientation="Horizontal">\r
</Button>\r
\r
<Button Name="Pause" DockPanel.Dock="Left" AutomationProperties.Name="Pause Queue"\r
- cal:Message.Attach="[Event Click] = [Action PauseEncode]"\r
- Visibility="{Binding IsEncoding,\r
+ cal:Message.Attach="[Event Click] = [Action PauseQueueToolbar]"\r
+ Visibility="{Binding IsQueueRunning,\r
Converter={StaticResource boolToVisConverter},\r
ConverterParameter=false}">\r
<StackPanel Orientation="Horizontal">\r
<TextBlock Text="{Binding JobStatus}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis"/>\r
</StackPanel>\r
\r
- <ListBox Grid.Row="2"\r
+ <ListBox Grid.Row="2" Tag="{Binding}"\r
Margin="10,20,10,10"\r
dd:DragDrop.DropHandler="{Binding}"\r
dd:DragDrop.IsDragSource="True"\r
</i:Interaction.Triggers>\r
\r
<ListBox.ContextMenu>\r
- <ContextMenu>\r
+ <ContextMenu cal:Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">\r
+ <MenuItem cal:Message.Attach="[Event Click] = [Action StartQueue]" Header="{x:Static Properties:ResourcesUI.QueueView_Start}" />\r
+ <MenuItem cal:Message.Attach="[Event Click] = [Action PauseQueue]" Header="{x:Static Properties:ResourcesUI.QueueView_Pause}" />\r
+ <Separator />\r
<MenuItem cal:Message.Attach="[Event Click] = [Action ClearCompleted]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearCompleted}" />\r
<MenuItem cal:Message.Attach="[Event Click] = [Action Clear]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearAll}" />\r
<MenuItem cal:Message.Attach="[Event Click] = [Action RemoveSelectedJobs]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearSelected}" /> \r