]> granicus.if.org Git - handbrake/commitdiff
WinGui: Implementing the new queue design. This is currently experimental and has...
authorsr55 <sr55.hb@outlook.com>
Sat, 22 Sep 2018 18:45:24 +0000 (19:45 +0100)
committersr55 <sr55.hb@outlook.com>
Sat, 22 Sep 2018 18:45:24 +0000 (19:45 +0100)
17 files changed:
win/CS/HandBrakeWPF/HandBrakeWPF.csproj
win/CS/HandBrakeWPF/Properties/ResourcesUI.Designer.cs
win/CS/HandBrakeWPF/Properties/ResourcesUI.resx
win/CS/HandBrakeWPF/Services/Queue/Model/QueueTask.cs
win/CS/HandBrakeWPF/UserSettingConstants.cs
win/CS/HandBrakeWPF/Utilities/SystemInfo.cs
win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueViewModel.cs
win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
win/CS/HandBrakeWPF/ViewModels/OptionsViewModel.cs
win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
win/CS/HandBrakeWPF/Views/MainView.xaml
win/CS/HandBrakeWPF/Views/OptionsView.xaml
win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml [new file with mode: 0644]
win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml.cs [new file with mode: 0644]
win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml [new file with mode: 0644]
win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml.cs [new file with mode: 0644]
win/CS/HandBrakeWPF/Views/QueueView.xaml

index 7b9e55dacb24a4936b36129f65ebaf88eaa9897a..c7c9d422b654d965aedcf881a4d8396d4a599e32 100644 (file)
     <Compile Include="Views\MiniView.xaml.cs">\r
       <DependentUpon>MiniView.xaml</DependentUpon>\r
     </Compile>\r
+    <Compile Include="Views\Queue\QueueTwoContent.xaml.cs">\r
+      <DependentUpon>QueueTwoContent.xaml</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="Views\Queue\QueueTwoView.xaml.cs">\r
+      <DependentUpon>QueueTwoView.xaml</DependentUpon>\r
+    </Compile>\r
     <Compile Include="Views\Queue\Embedded.xaml.cs">\r
       <DependentUpon>Embedded.xaml</DependentUpon>\r
     </Compile>\r
       <Generator>MSBuild:Compile</Generator>\r
       <SubType>Designer</SubType>\r
     </Page>\r
+    <Page Include="Views\Queue\QueueTwoContent.xaml">\r
+      <SubType>Designer</SubType>\r
+      <Generator>MSBuild:Compile</Generator>\r
+    </Page>\r
+    <Page Include="Views\Queue\QueueTwoView.xaml">\r
+      <Generator>MSBuild:Compile</Generator>\r
+      <SubType>Designer</SubType>\r
+    </Page>\r
     <Page Include="Views\Queue\Embedded.xaml">\r
       <Generator>MSBuild:Compile</Generator>\r
       <SubType>Designer</SubType>\r
index 7478ef537f5bc57f62c130ecfdb2f6726f0962e6..4c3609f4e0f0dc1c1532d79e63aec13c4c2bc871 100644 (file)
@@ -1617,6 +1617,15 @@ namespace HandBrakeWPF.Properties {
             }\r
         }\r
         \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Show the new experimental queue design..\r
+        /// </summary>\r
+        public static string Options_ShowExperimentalQueueDesign {\r
+            get {\r
+                return ResourceManager.GetString("Options_ShowExperimentalQueueDesign", resourceCulture);\r
+            }\r
+        }\r
+        \r
         /// <summary>\r
         ///   Looks up a localized string similar to Show Queue in line with the main UI..\r
         /// </summary>\r
index e8660a2abc36563aadaa828d5171b9fc996ac336..dfa6745dcbd4b830bfcf5854942238fd9aad4b82 100644 (file)
@@ -1058,4 +1058,7 @@ This will not affect your current settings in the Subtitle tab.</value>
   <data name="SourceSelection_QueueArchiveRecoveryDesc" xml:space="preserve">\r
     <value>A previous queue archive is available. </value>\r
   </data>\r
+  <data name="Options_ShowExperimentalQueueDesign" xml:space="preserve">\r
+    <value>Show the new experimental queue design.</value>\r
+  </data>\r
 </root>
\ No newline at end of file
index be4c664fba9456b70f0dade8aca91447502340d7..d8456519acb137d844fd335c680168bf3da9aabd 100644 (file)
@@ -93,6 +93,7 @@ namespace HandBrakeWPF.Services.Queue.Model
             {\r
                 this.status = value;\r
                 this.NotifyOfPropertyChange(() => this.Status);\r
+                this.NotifyOfPropertyChange(() => this.ShowEncodeProgress);\r
             }\r
         }\r
 \r
@@ -116,6 +117,8 @@ namespace HandBrakeWPF.Services.Queue.Model
             }\r
         }\r
 \r
+        public bool ShowEncodeProgress => this.Status == QueueItemStatus.InProgress && SystemInfo.IsWindows10();\r
+\r
         #endregion\r
 \r
         protected bool Equals(QueueTask other)\r
index 30d3d7557f2663b327e1d2fa87397bdf0f986979..c81f315a58ee9417fa8d4c681e09e0a2f20df47b 100644 (file)
@@ -68,7 +68,9 @@ namespace HandBrakeWPF
         public const string EnableQuickSyncEncoding = "EnableQuickSyncEncoding";\r
         public const string EnableVceEncoder = "EnableVceEncoder";\r
         public const string EnableNvencEncoder = "EnableNvencEncoder";\r
+        public const string ShowExperimentalQueue = "ShowExperimentalQueue";\r
 \r
         #endregion\r
+\r
     }\r
 }
\ No newline at end of file
index 57c768fdd881c95530e716778198bc9f1d8cb98b..ca32b7af43e97369c3e7830d2ed0e9dfc60307a1 100644 (file)
@@ -110,5 +110,14 @@ namespace HandBrakeWPF.Utilities
                 return gpuInfo;
             }
         }
+
+        public static bool IsWindows10()
+        {
+            var reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
+
+            string productName = (string)reg.GetValue("ProductName");
+
+            return productName.StartsWith("Windows 10");
+        }
     }
 }
index 4f455d37356f56ba308cc2f32266e0f87d101be3..2e1de25a4ff5f326a3e25ba2f5ece51197800fba 100644 (file)
@@ -14,6 +14,13 @@ namespace HandBrakeWPF.ViewModels.Interfaces
     /// </summary>\r
     public interface IQueueViewModel\r
     {\r
+        /// <summary>\r
+        /// Temporary variable to toggle the new style experimental queue.\r
+        /// </summary>\r
+        bool IsNewQueueVisible { set; }\r
+\r
+        bool IsInline { set; }\r
+\r
         /// <summary>\r
         /// The when done action after a queue completes.\r
         /// </summary>\r
index 447810846dab16c04543441efcf16b9067995c87..980e525310a26454d0423a0af579f340ce6a131d 100644 (file)
@@ -1400,6 +1400,10 @@ namespace HandBrakeWPF.ViewModels
         public void OpenQueueWindow()\r
         {\r
             bool showQueueInline = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowQueueInline);\r
+            bool showNewQueue = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowExperimentalQueue); ;\r
+\r
+            this.QueueViewModel.IsNewQueueVisible = showNewQueue;\r
+            this.QueueViewModel.IsInline = showQueueInline;\r
 \r
             if (showQueueInline)\r
             {\r
index 75e6d9da71a4af65a3ade0464d96b70acf079f86..fb9cf52282b008b2ca28ab0ed2fe98b7a15b0e17 100644 (file)
@@ -88,7 +88,6 @@ namespace HandBrakeWPF.ViewModels
         private bool showAdvancedTab;\r
         private bool removePunctuation;\r
         private bool resetWhenDoneAction;\r
-\r
         private bool enableQuickSyncDecoding;\r
         private bool showQueueInline;\r
         private bool pauseOnLowDiskspace;\r
@@ -96,16 +95,13 @@ namespace HandBrakeWPF.ViewModels
         private bool useQsvDecodeForNonQsvEnc;\r
         private bool showStatusInTitleBar;\r
         private bool showPreviewOnSummaryTab;\r
-\r
         private string whenDoneAudioFile;\r
         private bool playSoundWhenDone;\r
         private bool playSoundWhenQueueDone;\r
-\r
         private bool enableQuickSyncEncoding;\r
-\r
-        private bool enableVceEncoder;\r
-\r
+        private bool enableVceEncoder;    \r
         private bool enableNvencEncoder;\r
+        private bool showExperimentalQueue;\r
 \r
         #endregion\r
 \r
@@ -369,6 +365,17 @@ namespace HandBrakeWPF.ViewModels
             }\r
         }\r
 \r
+        public bool ShowExperimentalQueue\r
+        {\r
+            get => this.showExperimentalQueue;\r
+            set\r
+            {\r
+                if (value == this.showExperimentalQueue) return;\r
+                this.showExperimentalQueue = value;\r
+                this.NotifyOfPropertyChange(() => this.ShowExperimentalQueue);\r
+            }\r
+        }\r
+\r
         /// <summary>\r
         /// Gets or sets a value indicating whether to show encode status in the tile bar.\r
         /// </summary>\r
@@ -1357,7 +1364,8 @@ namespace HandBrakeWPF.ViewModels
             this.WhenDoneAudioFileFullPath = this.userSettingService.GetUserSetting<string>(UserSettingConstants.WhenDoneAudioFile);\r
             this.PlaySoundWhenDone = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.PlaySoundWhenDone);\r
             this.PlaySoundWhenQueueDone = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.PlaySoundWhenQueueDone);\r
-\r
+            this.ShowExperimentalQueue = this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowExperimentalQueue);\r
+            \r
             // #############################\r
             // Output Settings\r
             // #############################\r
@@ -1518,13 +1526,17 @@ namespace HandBrakeWPF.ViewModels
             this.userSettingService.SetUserSetting(UserSettingConstants.SendFile, this.SendFileAfterEncode);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.SendFileToArgs, this.Arguments);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.ResetWhenDoneAction, this.ResetWhenDoneAction);\r
-            this.userSettingService.SetUserSetting(UserSettingConstants.ShowQueueInline, this.ShowQueueInline);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.ShowStatusInTitleBar, this.ShowStatusInTitleBar);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.ShowPreviewOnSummaryTab, this.ShowPreviewOnSummaryTab);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.PlaySoundWhenDone, this.PlaySoundWhenDone);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.PlaySoundWhenQueueDone, this.PlaySoundWhenQueueDone);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.WhenDoneAudioFile, this.WhenDoneAudioFileFullPath);\r
 \r
+            /* Experiments */\r
+            this.userSettingService.SetUserSetting(UserSettingConstants.ShowQueueInline, this.ShowQueueInline);\r
+            this.userSettingService.SetUserSetting(UserSettingConstants.ShowExperimentalQueue, this.ShowExperimentalQueue);\r
+\r
+\r
             /* Output Files */\r
             this.userSettingService.SetUserSetting(UserSettingConstants.AutoNaming, this.AutomaticallyNameFiles);\r
             this.userSettingService.SetUserSetting(UserSettingConstants.AutoNameFormat, this.AutonameFormat);\r
index 57ebd283057f67da7e61ca1f31bbd4ec232e719e..aefcf2980ef451213e30a13280a7f90f4320b80d 100644 (file)
@@ -47,8 +47,10 @@ namespace HandBrakeWPF.ViewModels
         private string jobsPending;\r
         private string whenDoneAction;\r
         private QueueTask selectedTask;\r
-\r
         private bool isQueueRunning;\r
+        private double progressValue;\r
+        private bool intermediateProgress;\r
+        private bool showEncodeProgress;\r
 \r
         #endregion\r
 \r
@@ -183,6 +185,10 @@ namespace HandBrakeWPF.ViewModels
                 this.selectedTask = value;\r
                 this.NotifyOfPropertyChange(() => this.SelectedTask);\r
                 this.HandleLogData();\r
+\r
+                this.NotifyOfPropertyChange(() => this.CanRetryJob);\r
+                this.NotifyOfPropertyChange(() => this.CanEditJob);\r
+                this.NotifyOfPropertyChange(() => this.CanRemoveJob);\r
             }\r
         }\r
 \r
@@ -190,6 +196,49 @@ namespace HandBrakeWPF.ViewModels
 \r
         public string ActivityLog { get; private set; }\r
 \r
+        public bool CanRetryJob => this.SelectedTask != null && this.SelectedTask.Status != QueueItemStatus.Waiting;\r
+\r
+        public bool CanEditJob => this.SelectedTask != null;\r
+\r
+        public bool CanRemoveJob => this.SelectedTask != null;\r
+\r
+        public double ProgressValue\r
+        {\r
+            get => this.progressValue;\r
+            set\r
+            {\r
+                if (value == this.progressValue) return;\r
+                this.progressValue = value;\r
+                this.NotifyOfPropertyChange(() => this.ProgressValue);\r
+            }\r
+        }\r
+\r
+        public bool IntermediateProgress\r
+        {\r
+            get => this.intermediateProgress;\r
+            set\r
+            {\r
+                if (value == this.intermediateProgress) return;\r
+                this.intermediateProgress = value;\r
+                this.NotifyOfPropertyChange(() => this.IntermediateProgress);\r
+            }\r
+        }\r
+\r
+        public bool ShowEncodeProgress\r
+        {\r
+            get => this.showEncodeProgress;\r
+            set\r
+            {\r
+                if (value == this.showEncodeProgress) return;\r
+                this.showEncodeProgress = value;\r
+                this.NotifyOfPropertyChange(() => this.ShowEncodeProgress);\r
+            }\r
+        }\r
+\r
+        public bool IsNewQueueVisible { get; set; }\r
+\r
+        public bool IsInline { get; set; }\r
+\r
         #endregion\r
 \r
         #region Public Methods\r
@@ -376,6 +425,7 @@ namespace HandBrakeWPF.ViewModels
             task.Status = QueueItemStatus.Waiting;\r
             this.queueProcessor.BackupQueue(null);\r
             this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);\r
+            this.NotifyOfPropertyChange(() => this.CanRetryJob);\r
         }\r
 \r
         /// <summary>\r
@@ -611,6 +661,8 @@ namespace HandBrakeWPF.ViewModels
             Execute.OnUIThread(() =>\r
             {\r
                 string jobsPending = string.Format(Resources.Main_JobsPending_addon, this.queueProcessor.Count);\r
+                this.IntermediateProgress = false; \r
+\r
                 if (e.IsSubtitleScan)\r
                 {\r
                     this.JobStatus = string.Format(Resources.MainViewModel_EncodeStatusChanged_SubScan_StatusLabel,\r
@@ -620,14 +672,18 @@ namespace HandBrakeWPF.ViewModels
                         e.EstimatedTimeLeft,\r
                         e.ElapsedTime,\r
                         jobsPending);\r
+\r
+                    this.ProgressValue = e.PercentComplete;\r
                 }\r
                 else if (e.IsMuxing)\r
                 {\r
                     this.JobStatus = ResourcesUI.MainView_Muxing;\r
+                    this.IntermediateProgress = true;\r
                 }\r
                 else if (e.IsSearching)\r
                 {\r
                     this.JobStatus = string.Format(ResourcesUI.MainView_ProgressStatusWithTask, ResourcesUI.MainView_Searching, e.PercentComplete, e.EstimatedTimeLeft, jobsPending);\r
+                    this.ProgressValue = e.PercentComplete;\r
                 }\r
                 else\r
                 {\r
@@ -641,6 +697,7 @@ namespace HandBrakeWPF.ViewModels
                             e.EstimatedTimeLeft,\r
                             e.ElapsedTime,\r
                             jobsPending);\r
+                    this.ProgressValue = e.PercentComplete;\r
                 }\r
             });\r
         }\r
@@ -663,6 +720,10 @@ namespace HandBrakeWPF.ViewModels
                 this.JobStatus = Resources.QueueViewModel_QueueNotRunning;\r
                 this.IsQueueRunning = false;\r
             }\r
+\r
+            this.NotifyOfPropertyChange(() => this.CanRetryJob);\r
+            this.NotifyOfPropertyChange(() => this.CanEditJob);\r
+            this.NotifyOfPropertyChange(() => this.CanRemoveJob);\r
         }\r
 \r
         /// <summary>\r
index d9cea5db91fe6b4e362db99826c413c254f768d2..0c27e9ff1a40534b53139bbaec705d65a815facd 100644 (file)
             </StackPanel>\r
 \r
             <!-- Queue in-line display if enabled -->\r
-            <Grid  Grid.Row="4" Grid.Column="0" Margin="10,0,10,10"  Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}"\r
+            <Grid  Grid.Row="4" Grid.Column="0" Margin="10,0,10,10" Visibility="{Binding IsQueueShowingInLine, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" \r
                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch">\r
                 <Grid.RowDefinitions>\r
                     <RowDefinition Height="Auto" />\r
                     <RowDefinition Height="*" />\r
                 </Grid.RowDefinitions>\r
                 <Label Content="Queue" FontWeight="Bold" Grid.Row="0"/>\r
-                <ContentControl x:Name="QueueViewModel" cal:View.Context="Embedded" Grid.Row="1" />\r
+                <ContentControl cal:View.Model="{Binding QueueViewModel}" cal:View.Context="QueueTwoContent" Grid.Row="1" />\r
             </Grid>\r
 \r
             <!--  Presets  -->\r
index cdfc4d862831d670cc91993afe8ebe022717fdcd..ae6dccfcafc97430b2c08a6131a5ea9848305fee 100644 (file)
 \r
                         <StackPanel Orientation="Vertical" Margin="20,0,0,0">\r
                             <TextBlock Text="{x:Static  Properties:ResourcesUI.Options_ExperimentalFeatures}" Margin="0,0,0,10" />\r
-                            <CheckBox Content="{x:Static Properties:ResourcesUI.Options_ShowQueueInline}" IsChecked="{Binding ShowQueueInline}" />\r
+                           \r
+                            <CheckBox Content="{x:Static Properties:ResourcesUI.Options_ShowExperimentalQueueDesign}" IsChecked="{Binding ShowExperimentalQueue}" />\r
+                            <CheckBox Content="{x:Static Properties:ResourcesUI.Options_ShowQueueInline}" IsChecked="{Binding ShowQueueInline}" Margin="20,5,0,0" />\r
                         </StackPanel>\r
                     </StackPanel>\r
                 </StackPanel>\r
diff --git a/win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml b/win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml
new file mode 100644 (file)
index 0000000..3e3a93d
--- /dev/null
@@ -0,0 +1,386 @@
+<UserControl x:Class="HandBrakeWPF.Views.Queue.QueueTwoContent"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:cal="http://www.caliburnproject.org"
+        xmlns:Converters="clr-namespace:HandBrakeWPF.Converters"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:dd="clr-namespace:GongSolutions.Wpf.DragDrop;assembly=GongSolutions.Wpf.DragDrop"
+        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:Audio="clr-namespace:HandBrakeWPF.Converters.Audio"
+        xmlns:Subtitles="clr-namespace:HandBrakeWPF.Converters.Subtitles"
+        xmlns:video="clr-namespace:HandBrakeWPF.Converters.Video"
+        xmlns:commands="clr-namespace:HandBrakeWPF.Commands"
+        xmlns:helpers="clr-namespace:HandBrakeWPF.Helpers"
+        xmlns:Properties="clr-namespace:HandBrakeWPF.Properties"
+        xmlns:queue="clr-namespace:HandBrakeWPF.Converters.Queue"
+        TextOptions.TextFormattingMode="Display"
+        mc:Ignorable="d">
+
+    <UserControl.Resources>
+        <Converters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />
+        <Converters:FullPathToFileNameConverter x:Key="filePathToFilenameConverter" />
+        <Converters:EnumComboConverter x:Key="enumComboConverter" />
+        <Converters:QueueStatusToVisibilityConverter x:Key="queueStatusVisConverter" />
+        <Converters:InverseBooleanConverter x:Key="notBooleanConverter" />
+        <Audio:AudioQueueDisplayConverter x:Key="audioTrackDisplayConverter" />
+        <Subtitles:SubtitlesQueueDisplayConverter x:Key="subtitleTrackDisplayConverter" />
+        <video:EncoderOptionsTooltipConverter x:Key="encoderOptionsTooltipConverter" />
+        <video:VideoOptionsTooltipConverter x:Key="videoOptionsTooltipConverter" />
+        <queue:PictureSettingsDescConveter x:Key="pictureSettingsDescConverter" />
+
+        <Style x:Key="LongToolTipHolder" TargetType="FrameworkElement">
+            <Setter Property="ToolTipService.ShowDuration" Value="10000" />
+        </Style>
+
+    </UserControl.Resources>
+
+    <Grid>
+
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto" />
+            <RowDefinition Height="Auto" />
+            <RowDefinition Height="*" />
+        </Grid.RowDefinitions>
+
+        <Grid HorizontalAlignment="Stretch" Grid.Row="0" Visibility="{Binding IsNewQueueVisible, Converter={StaticResource boolToVisConverter}}">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto" />
+                <ColumnDefinition Width="*" />
+                <ColumnDefinition Width="Auto" />
+                <ColumnDefinition Width="Auto" />
+            </Grid.ColumnDefinitions>
+
+            <TextBlock Text="{x:Static Properties:ResourcesUI.MainView_ShowQueue}" FontSize="28" VerticalAlignment="Center" FontFamily="Segoe UI Light" Margin="10,0,0,0"  />
+
+            <Menu HorizontalAlignment="Right" VerticalAlignment="Center" Background="Transparent" Grid.Column="2">
+                <MenuItem>
+                    <MenuItem.Header>
+                        <StackPanel Height="32" Orientation="Horizontal">
+                            <TextBlock VerticalAlignment="Center"
+                                           FontWeight="Bold"
+                                           Text="{x:Static Properties:ResourcesUI.QueueView_WhenDone}" />
+                            <Label Margin="8,0,0,0"
+                                       VerticalAlignment="Center"
+                                       Content="{Binding WhenDoneAction}" />
+                            <Path Height="5"
+                                      Margin="2,2,2,0"
+                                      Data="M 0 0 L 4 4 L 8 0 Z"
+                                      Fill="{DynamicResource GlyphBrush}" />
+                        </StackPanel>
+                    </MenuItem.Header>
+
+                    <MenuItem x:Name="doNothing"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(doNothing.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_DoNothing}" />
+                    <MenuItem x:Name="shutdown"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(shutdown.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_Shutdown}" />
+                    <MenuItem x:Name="suspend"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(suspend.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_Suspend}" />
+                    <MenuItem x:Name="hibernate"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(hibernate.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_Hibernate}"/>
+                    <MenuItem x:Name="lock"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(lock.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_LockSystem}" />
+                    <MenuItem x:Name="logoff"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(logoff.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_Logoff}"/>
+                    <MenuItem x:Name="quit"
+                                  cal:Message.Attach="[Event Click] = [Action WhenDone(quit.Header)]"
+                                  Header="{x:Static Properties:ResourcesUI.QueueView_QuitHandBrake}"/>
+                </MenuItem>
+            </Menu>
+
+            <Menu HorizontalAlignment="Right" Background="Transparent" VerticalAlignment="Center" Grid.Column="3">
+                <MenuItem>
+                    <MenuItem.Header>
+                        <StackPanel Height="32" Orientation="Horizontal">
+                            <Image Source="..\Images\Advanced.png" Width="20" Height="20" VerticalAlignment="Center" />
+                            <TextBlock VerticalAlignment="Center"
+                                           Text="{x:Static Properties:ResourcesUI.QueueView_Options}" Margin="5,0,0,0" />
+                            <Path Height="5"
+                                      Margin="2,2,2,0"
+                                      Data="M 0 0 L 4 4 L 8 0 Z"
+                                      Fill="{DynamicResource GlyphBrush}" />
+                        </StackPanel>
+                    </MenuItem.Header>
+
+                    <MenuItem cal:Message.Attach="[Event Click] = [Action ClearCompleted]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearCompleted}" />
+                    <MenuItem cal:Message.Attach="[Event Click] = [Action Clear]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearQueue}" />
+                    <Separator />
+                    <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />
+
+                </MenuItem>
+            </Menu>
+
+        </Grid>
+
+        <StackPanel Grid.Row="1" Margin="20,10,10,0" Visibility="{Binding IsNewQueueVisible, Converter={StaticResource boolToVisConverter}}">
+            <TextBlock Text="{Binding JobsPending}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis" />
+            <TextBlock Text="{Binding JobStatus}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis"/>
+        </StackPanel>
+
+        <Grid Grid.Row="2" Margin="0,10,0,0">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="3*" MaxWidth="400" x:Name="leftTabPanel" />
+                <ColumnDefinition Width="5*" x:Name="rightTabPanel"  />
+            </Grid.ColumnDefinitions>
+
+            <ListBox Tag="{Binding}" x:Name="queueJobs"
+                 Margin="10,0,10,10"
+                 dd:DragDrop.DropHandler="{Binding}"
+                 dd:DragDrop.IsDragSource="True"
+                 dd:DragDrop.IsDropTarget="True"
+                 ItemsSource="{Binding QueueTasks, Mode=OneWay}"
+                 helpers:ListBoxHelper.SelectedItems="{Binding SelectedItems}" 
+                 SelectedItem="{Binding SelectedTask}"
+                 SelectionMode="Extended">
+
+                <i:Interaction.Triggers>
+                    <commands:InputBindingTrigger>
+                        <commands:InputBindingTrigger.InputBinding>
+                            <KeyBinding Key="Delete"/>
+                        </commands:InputBindingTrigger.InputBinding>
+                        <cal:ActionMessage MethodName="RemoveSelectedJobs" />
+                    </commands:InputBindingTrigger>
+                </i:Interaction.Triggers>
+
+                <ListBox.ContextMenu>
+                    <ContextMenu cal:Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}" Opened="ContextMenu_OnOpened">
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action StartQueue]" Header="{x:Static Properties:ResourcesUI.QueueView_Start}" />
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action PauseQueue]" Header="{x:Static Properties:ResourcesUI.QueueView_Pause}" />
+                        <Separator />
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action ClearCompleted]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearCompleted}" />
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action Clear]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearAll}" />
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action RemoveSelectedJobs]" Header="{x:Static Properties:ResourcesUI.QueueView_ClearSelected}" />
+                        <Separator />
+                        <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenSourceDir}" x:Name="openSourceDir" Click="OpenSourceDir_OnClick" />
+                        <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenDestDir}" x:Name="openDestDir" Click="OpenDestDir_OnClick" />
+                        <Separator />
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />
+                    </ContextMenu>
+                </ListBox.ContextMenu>
+
+                <ListBox.ItemContainerStyle>
+                    <Style TargetType="{x:Type ListBoxItem}">
+                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
+                        <Setter Property="Margin" Value="0,0,0,1" />
+                    </Style>
+                </ListBox.ItemContainerStyle>
+
+                <ListBox.ItemTemplate>
+                    <DataTemplate x:Name="QueueItemTemplate">
+
+                        <Grid HorizontalAlignment="Stretch">
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="40" />
+                                <ColumnDefinition Width="*" />
+                                <ColumnDefinition Width="Auto" />
+                            </Grid.ColumnDefinitions>
+
+                            <!--  Marker  -->
+                            <Image Grid.Column="0" Width="16" Height="16" SnapsToDevicePixels="True">
+
+                                <Image.LayoutTransform>
+                                    <RotateTransform CenterX="8" CenterY="8" Angle="0"/>
+                                </Image.LayoutTransform>
+
+                                <Image.Style>
+                                    <Style TargetType="{x:Type Image}">
+                                        <Style.Triggers>
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Waiting">
+                                                <Setter Property="Source" Value="..\Images\Movies.png" />
+                                            </DataTrigger>
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="In Progress">
+                                                <Setter Property="Source" Value="..\Images\Working0.png" />
+                                                <DataTrigger.EnterActions>
+                                                    <BeginStoryboard>
+                                                        <Storyboard>
+                                                            <DoubleAnimation Duration="0:0:2" To="180" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)" RepeatBehavior="Forever" />
+                                                        </Storyboard>
+                                                    </BeginStoryboard>
+                                                </DataTrigger.EnterActions>
+                                                <DataTrigger.ExitActions>
+                                                    <BeginStoryboard>
+                                                        <Storyboard>
+                                                            <DoubleAnimation Duration="0:0:0" To="0" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)"/>
+                                                        </Storyboard>
+                                                    </BeginStoryboard>
+                                                </DataTrigger.ExitActions>
+                                            </DataTrigger>
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Completed">
+                                                <Setter Property="Source" Value="..\Images\Complete.png" />
+                                            </DataTrigger>
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Error">
+                                                <Setter Property="Source" Value="..\Images\WarningSmall.png" />
+                                            </DataTrigger>
+                                        </Style.Triggers>
+                                    </Style>
+                                </Image.Style>
+                            </Image>
+
+                            <!--  Settings  -->
+                            <StackPanel Grid.Column="1"
+                                    Margin="0,5,0,5"
+                                    HorizontalAlignment="Stretch">
+                                <StackPanel Orientation="Horizontal">
+                                    <TextBlock FontWeight="Bold" Text="Title: " />
+                                    <TextBlock Text="{Binding Task.Title}" />
+
+                                    <TextBlock Margin="10,0,0,0"
+                                           FontWeight="Bold"
+                                           Text="{Binding Task.PointToPointMode}" />
+                                    <TextBlock Text=": " />
+                                    <TextBlock Text="{Binding Task.StartPoint}" />
+                                    <TextBlock Margin="5,0,5,0" Text="to" />
+                                    <TextBlock Text="{Binding Task.EndPoint}" />
+                                </StackPanel>
+
+                                <StackPanel Orientation="Horizontal">
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" />
+                                    <TextBlock Text="{Binding Task.Source, Converter={StaticResource filePathToFilenameConverter}}" />
+                                </StackPanel>
+
+                                <StackPanel Orientation="Horizontal">
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" />
+                                    <TextBlock Text="{Binding Task.Destination, Converter={StaticResource filePathToFilenameConverter}}" />
+                                </StackPanel>
+
+                                <ProgressBar Minimum="0" Height="4" Maximum="100" Name="pbStatus" Margin="0,0,5,0"
+                                             Value="{Binding DataContext.ProgressValue, ElementName=queueJobs}" IsIndeterminate="{Binding DataContext.IntermediateProgress, ElementName=queueJobs}"
+                                             Visibility="{Binding ShowEncodeProgress, Converter={StaticResource boolToVisConverter}}" />
+                            </StackPanel>
+                        </Grid>
+                    </DataTemplate>
+                </ListBox.ItemTemplate>
+            </ListBox>
+
+            <TabControl x:Name="summaryTabControl"  Grid.Column="1"  Margin="0,0,10,10">
+                <TabItem Header="Summary" >
+                    <ScrollViewer VerticalScrollBarVisibility="Auto" Margin="5,5,0,5">
+
+                        <StackPanel Orientation="Vertical"  Margin="5,5,0,5">
+
+                            <StackPanel Orientation="Horizontal" >
+
+                                <StackPanel.Resources>
+                                    <Style TargetType="Button">
+                                        <Setter Property="Padding" Value="8,2" />
+                                    </Style>
+                                </StackPanel.Resources>
+
+
+                                <Button  Visibility="{Binding Status, Converter={StaticResource queueStatusVisConverter}}" >
+                                    <Button.Content>
+                                        <StackPanel Orientation="Horizontal">
+                                            <Image Width="20" Height="20" VerticalAlignment="Center" Margin="0,0,5,0"
+                                               Source="../Images/Refresh.ico" ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_ResetJobStatus}">
+                                            </Image>
+                                            <TextBlock Text="Retry" />
+                                        </StackPanel>
+
+                                    </Button.Content>
+                                    <i:Interaction.Triggers>
+                                        <i:EventTrigger EventName="Click">
+                                            <cal:ActionMessage MethodName="RetryJob">
+                                                <cal:Parameter Value="{Binding SelectedTask}" />
+                                            </cal:ActionMessage>
+                                        </i:EventTrigger>
+                                    </i:Interaction.Triggers>
+                                </Button>
+
+                                <Button Margin="10,0,0,0">
+                                    <Button.Content>
+                                        <StackPanel Orientation="Horizontal">
+                                            <Image Width="20" Margin="0,0,5,0" Height="20" VerticalAlignment="Center"
+                                               Source="../Images/options24.png" ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_ResetJobStatus}">
+                                            </Image>
+                                            <TextBlock Text="Edit" />
+                                        </StackPanel>
+                                    </Button.Content>
+                                    <i:Interaction.Triggers>
+                                        <i:EventTrigger EventName="Click">
+                                            <cal:ActionMessage MethodName="EditJob">
+                                                <cal:Parameter Value="{Binding SelectedTask}" />
+                                            </cal:ActionMessage>
+                                        </i:EventTrigger>
+                                    </i:Interaction.Triggers>
+                                </Button>
+
+                                <Button Margin="10,0,0,0">
+                                    <Button.Content>
+                                        <StackPanel Orientation="Horizontal">
+                                            <Image Width="20" Height="20" VerticalAlignment="Center" Margin="0,0,5,0" 
+                                               Source="../Images/delete.png" ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_ResetJobStatus}">
+                                            </Image>
+                                            <TextBlock Text="Delete" />
+                                        </StackPanel>
+                                    </Button.Content>
+                                    <i:Interaction.Triggers>
+                                        <i:EventTrigger EventName="Click">
+                                            <cal:ActionMessage MethodName="RemoveJob">
+                                                <cal:Parameter Value="{Binding SelectedTask}" />
+                                            </cal:ActionMessage>
+                                        </i:EventTrigger>
+                                    </i:Interaction.Triggers>
+                                </Button>
+                            </StackPanel>
+
+                            <Grid Style="{StaticResource LongToolTipHolder}" Margin="0,5,0,0" >
+                                <Grid.Resources>
+                                    <Style TargetType="TextBlock">
+                                        <Setter Property="Margin" Value="0,5,0,5" />
+                                    </Style>
+                                </Grid.Resources>
+
+                                <Grid.RowDefinitions>
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                </Grid.RowDefinitions>
+
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="Auto" MinWidth="100" />
+                                    <ColumnDefinition Width="*" />
+                                </Grid.ColumnDefinitions>
+
+                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0" />
+                                <TextBlock Text="{Binding SelectedTask.Task.Source}" TextWrapping="Wrap" Grid.Row="0" Grid.Column="1" />
+
+                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" VerticalAlignment="Top" Grid.Row="1" Grid.Column="0" />
+                                <TextBlock Text="{Binding SelectedTask.Task.Destination}" TextWrapping="Wrap" Grid.Row="1" Grid.Column="1" />
+
+                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_PictureSettings}" VerticalAlignment="Top" Grid.Row="2" Grid.Column="0" />
+                                <TextBlock Text="{Binding SelectedTask.Task, Converter={StaticResource pictureSettingsDescConverter}}" TextWrapping="Wrap" Grid.Row="2" Grid.Column="1"  />
+
+                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Video}" Grid.Row="3" Grid.Column="0" />
+                                <TextBlock Text="{Binding SelectedTask.Task, Converter={StaticResource videoOptionsTooltipConverter}}" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap"  />
+
+                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Audio}"  Grid.Row="4" Grid.Column="0"/>
+                                <TextBlock Text="{Binding SelectedTask.Task.AudioTracks, Converter={StaticResource audioTrackDisplayConverter}}"
+                                           Grid.Row="4" Grid.Column="1"/>
+
+                                <TextBlock FontWeight="Bold" VerticalAlignment="Top" Text="{x:Static Properties:ResourcesUI.QueueView_Subtitles}" Grid.Row="5" Grid.Column="0"  />
+                                <TextBlock Text="{Binding SelectedTask.Task.SubtitleTracks, Converter={StaticResource subtitleTrackDisplayConverter}}"
+                                           Grid.Row="5" Grid.Column="1" />
+
+                                <TextBlock FontWeight="Bold" VerticalAlignment="Top" Grid.Row="6" Grid.Column="0"  Text="{x:Static Properties:ResourcesUI.QueueView_Advanced}" />
+                                <TextBlock Text="{Binding SelectedTask.Task, Converter={StaticResource encoderOptionsTooltipConverter}}" Grid.Row="6" Grid.Column="1" TextWrapping="Wrap"  />
+                            </Grid>
+
+                        </StackPanel>
+                    </ScrollViewer>
+                </TabItem>
+            </TabControl>
+
+        </Grid>
+    </Grid>
+</UserControl>
+
diff --git a/win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml.cs b/win/CS/HandBrakeWPF/Views/Queue/QueueTwoContent.xaml.cs
new file mode 100644 (file)
index 0000000..4046d2c
--- /dev/null
@@ -0,0 +1,97 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueTwoView.xaml.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>
+//   Interaction logic for QueueTwoView.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Views.Queue
+{
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Media;
+
+    using HandBrakeWPF.Services.Queue.Model;
+    using HandBrakeWPF.ViewModels;
+
+    /// <summary>
+    /// Interaction logic for VideoView
+    /// </summary>
+    public partial class QueueTwoContent : UserControl
+    {
+        private QueueTask mouseActiveQueueTask;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Queue2View"/> class.
+        /// </summary>
+        public QueueTwoContent()
+        {
+            this.InitializeComponent();
+            this.SizeChanged += this.Queue2View_SizeChanged;
+        }
+
+        private void Queue2View_SizeChanged(object sender, SizeChangedEventArgs e)
+        {
+            // Make the view adaptive. 
+            if (e.WidthChanged)
+            {
+                this.summaryTabControl.Visibility = this.ActualWidth < 550 ? Visibility.Collapsed : Visibility.Visible;
+                this.leftTabPanel.Width = this.ActualWidth < 550 ? new GridLength(this.ActualWidth - 10, GridUnitType.Star) : new GridLength(3, GridUnitType.Star);
+                this.leftTabPanel.MaxWidth = this.ActualWidth < 550 ? 550 : 400;
+            }
+        }
+        private void ContextMenu_OnOpened(object sender, RoutedEventArgs e)
+        {
+            ContextMenu menu = sender as ContextMenu;
+            this.mouseActiveQueueTask = null;
+
+            if (menu != null)
+            {
+                Point p = Mouse.GetPosition(this);
+                HitTestResult result = VisualTreeHelper.HitTest(this, p);
+
+                if (result != null)
+                {
+                    ListBoxItem listBoxItem = FindParent<ListBoxItem>(result.VisualHit);
+                    if (listBoxItem != null)
+                    {
+                        this.mouseActiveQueueTask = listBoxItem.DataContext as QueueTask;
+                    }
+                }
+            }
+
+            this.openSourceDir.IsEnabled = this.mouseActiveQueueTask != null;
+            this.openDestDir.IsEnabled = this.mouseActiveQueueTask != null;
+        }
+
+        private static T FindParent<T>(DependencyObject from) where T : class
+        {
+            DependencyObject parent = VisualTreeHelper.GetParent(from);
+
+            T result = null;
+            if (parent is T)
+            {
+                result = parent as T;
+            }
+            else if (parent != null)
+            {
+                result = FindParent<T>(parent);
+            }
+
+            return result;
+        }
+
+        private void OpenSourceDir_OnClick(object sender, RoutedEventArgs e)
+        {
+            ((QueueViewModel)this.DataContext).OpenSourceDirectory(this.mouseActiveQueueTask);
+        }
+
+        private void OpenDestDir_OnClick(object sender, RoutedEventArgs e)
+        {
+            ((QueueViewModel)this.DataContext).OpenDestinationDirectory(this.mouseActiveQueueTask);
+        }
+    }
+}
diff --git a/win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml b/win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml
new file mode 100644 (file)
index 0000000..a49d250
--- /dev/null
@@ -0,0 +1,15 @@
+<Window x:Class="HandBrakeWPF.Views.Queue.QueueTwoView"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:queue1="clr-namespace:HandBrakeWPF.Views.Queue"
+        Title="{Binding Title}"
+        WindowStartupLocation="CenterScreen"
+        TextOptions.TextFormattingMode="Display"
+        mc:Ignorable="d">
+
+    <queue1:QueueTwoContent DataContext="{Binding DataContext}" />
+</Window>
+
diff --git a/win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml.cs b/win/CS/HandBrakeWPF/Views/Queue/QueueTwoView.xaml.cs
new file mode 100644 (file)
index 0000000..550ab4b
--- /dev/null
@@ -0,0 +1,35 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueTwoView.xaml.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>
+//   Interaction logic for QueueTwoView.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Views.Queue
+{
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Media;
+
+    using HandBrakeWPF.Services.Queue.Model;
+    using HandBrakeWPF.ViewModels;
+
+    /// <summary>
+    /// Interaction logic for VideoView
+    /// </summary>
+    public partial class QueueTwoView : Window
+    {
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Queue2View"/> class.
+        /// </summary>
+        public QueueTwoView()
+        {
+        }
+
+
+    }
+}
index 8fe2aeaeb86cb607bb3d52012f6bc456b2da66cf..305a7b9f4ef6333b250a2ab7654f9fb300cfed1a 100644 (file)
         xmlns:helpers="clr-namespace:HandBrakeWPF.Helpers"\r
         xmlns:Properties="clr-namespace:HandBrakeWPF.Properties"\r
         xmlns:queue="clr-namespace:HandBrakeWPF.Converters.Queue"\r
+        xmlns:queue1="clr-namespace:HandBrakeWPF.Views.Queue"\r
         Title="{Binding Title}"\r
-        Width="700"\r
+        Width="850"\r
         Height="500"\r
-        MinWidth="350"\r
-        MinHeight="250"\r
+        MinWidth="450"\r
+        MinHeight="260"\r
         WindowStartupLocation="CenterScreen"\r
         TextOptions.TextFormattingMode="Display"\r
         mc:Ignorable="d">\r
     <Grid>\r
 \r
         <Grid.RowDefinitions>\r
-            <RowDefinition Height="Auto" />\r
-            <RowDefinition Height="Auto" />\r
             <RowDefinition Height="*" />\r
         </Grid.RowDefinitions>\r
 \r
+        <queue1:QueueTwoContent DataContext="{Binding}"  Visibility="{Binding IsNewQueueVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />\r
 \r
-        <ToolBar Name="mainToolBar"\r
+        <Grid Visibility="{Binding IsNewQueueVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=true}">\r
+\r
+            <Grid.RowDefinitions>\r
+                <RowDefinition Height="Auto" />\r
+                <RowDefinition Height="Auto" />\r
+                <RowDefinition Height="*" />\r
+            </Grid.RowDefinitions>\r
+\r
+\r
+            <ToolBar Name="mainToolBar"\r
                  HorizontalAlignment="Stretch"\r
                  VerticalAlignment="Stretch"\r
                  SnapsToDevicePixels="True" \r
                  AllowDrop="False" Focusable="False" >\r
-            <ToolBar.Resources>\r
-                <Style TargetType="{x:Type ToolBarPanel}">\r
-                    <Setter Property="Orientation" Value="Vertical"/>\r
-                </Style>\r
+                <ToolBar.Resources>\r
+                    <Style TargetType="{x:Type ToolBarPanel}">\r
+                        <Setter Property="Orientation" Value="Vertical"/>\r
+                    </Style>\r
 \r
-                <Style BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="{x:Type Button}" />\r
-            </ToolBar.Resources>\r
+                    <Style BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="{x:Type Button}" />\r
+                </ToolBar.Resources>\r
 \r
-            <DockPanel Background="Transparent" HorizontalAlignment="Stretch">\r
+                <DockPanel Background="Transparent" HorizontalAlignment="Stretch">\r
 \r
-                <Button Name="Start" DockPanel.Dock="Left" AutomationProperties.Name="Start Queue"\r
+                    <Button Name="Start" DockPanel.Dock="Left" AutomationProperties.Name="Start Queue"\r
                         cal:Message.Attach="[Event Click] = [Action StartQueue]"\r
                         IsEnabled="{Binding IsQueueRunning, Converter={StaticResource notBooleanConverter}}"\r
                         Visibility="{Binding IsQueueRunning,\r
                                              Converter={StaticResource boolToVisConverter},\r
                                              ConverterParameter=true}">\r
-                    <StackPanel Orientation="Horizontal">\r
-                        <Image Width="32"\r
+                        <StackPanel Orientation="Horizontal">\r
+                            <Image Width="32"\r
                                Height="32"\r
                                Source="Images/Play.png" />\r
-                        <Label Margin="8,0,0,0"\r
+                            <Label Margin="8,0,0,0"\r
                                VerticalAlignment="Center"\r
                                Content="{x:Static Properties:ResourcesUI.QueueView_Start}" />\r
-                    </StackPanel>\r
-                </Button>\r
+                        </StackPanel>\r
+                    </Button>\r
 \r
-                <Button Name="Pause" DockPanel.Dock="Left" AutomationProperties.Name="Pause Queue"\r
+                    <Button Name="Pause" DockPanel.Dock="Left" AutomationProperties.Name="Pause Queue"\r
                         cal:Message.Attach="[Event Click] = [Action PauseQueueToolbar]"\r
                         Visibility="{Binding IsQueueRunning,\r
                                              Converter={StaticResource boolToVisConverter},\r
                                              ConverterParameter=false}">\r
-                    <StackPanel Orientation="Horizontal">\r
-                        <Image Width="32"\r
+                        <StackPanel Orientation="Horizontal">\r
+                            <Image Width="32"\r
                                Height="32"\r
                                Source="Images/Pause.png" />\r
-                        <Label Margin="8,0,0,0"\r
+                            <Label Margin="8,0,0,0"\r
                                VerticalAlignment="Center"\r
                                Content="{x:Static Properties:ResourcesUI.QueueView_Pause}" />\r
-                    </StackPanel>\r
-                </Button>\r
-\r
-                <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" HorizontalAlignment="Right">\r
-                    <Menu HorizontalAlignment="Right" VerticalAlignment="Center" Background="Transparent">\r
-                        <MenuItem>\r
-                            <MenuItem.Header>\r
-                                <StackPanel Height="32" Orientation="Horizontal">\r
-                                    <TextBlock VerticalAlignment="Center"\r
+                        </StackPanel>\r
+                    </Button>\r
+\r
+                    <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" HorizontalAlignment="Right">\r
+                        <Menu HorizontalAlignment="Right" VerticalAlignment="Center" Background="Transparent">\r
+                            <MenuItem>\r
+                                <MenuItem.Header>\r
+                                    <StackPanel Height="32" Orientation="Horizontal">\r
+                                        <TextBlock VerticalAlignment="Center"\r
                                            FontWeight="Bold"\r
                                            Text="{x:Static Properties:ResourcesUI.QueueView_WhenDone}" />\r
-                                    <Label Margin="8,0,0,0"\r
+                                        <Label Margin="8,0,0,0"\r
                                        VerticalAlignment="Center"\r
                                        Content="{Binding WhenDoneAction}" />\r
-                                    <Path Height="5"\r
+                                        <Path Height="5"\r
                                       Margin="2,2,2,0"\r
                                       Data="M 0 0 L 4 4 L 8 0 Z"\r
                                       Fill="{DynamicResource GlyphBrush}" />\r
-                                </StackPanel>\r
-                            </MenuItem.Header>\r
+                                    </StackPanel>\r
+                                </MenuItem.Header>\r
 \r
-                            <MenuItem x:Name="doNothing"\r
+                                <MenuItem x:Name="doNothing"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(doNothing.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_DoNothing}" />\r
-                            <MenuItem x:Name="shutdown"\r
+                                <MenuItem x:Name="shutdown"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(shutdown.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_Shutdown}" />\r
-                            <MenuItem x:Name="suspend"\r
+                                <MenuItem x:Name="suspend"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(suspend.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_Suspend}" />\r
-                            <MenuItem x:Name="hibernate"\r
+                                <MenuItem x:Name="hibernate"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(hibernate.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_Hibernate}"/>\r
-                            <MenuItem x:Name="lock"\r
+                                <MenuItem x:Name="lock"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(lock.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_LockSystem}" />\r
-                            <MenuItem x:Name="logoff"\r
+                                <MenuItem x:Name="logoff"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(logoff.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_Logoff}"/>\r
-                            <MenuItem x:Name="quit"\r
+                                <MenuItem x:Name="quit"\r
                                   cal:Message.Attach="[Event Click] = [Action WhenDone(quit.Header)]"\r
                                   Header="{x:Static Properties:ResourcesUI.QueueView_QuitHandBrake}"/>\r
-                        </MenuItem>\r
-                    </Menu>\r
-\r
-                    <Menu HorizontalAlignment="Right" Background="Transparent" VerticalAlignment="Center">\r
-                        <MenuItem>\r
-                            <MenuItem.Header>\r
-                                <StackPanel Height="32" Orientation="Horizontal">\r
-                                    <Image Source="Images\Advanced.png" Width="20" Height="20" VerticalAlignment="Center" />\r
-                                    <TextBlock VerticalAlignment="Center"\r
+                            </MenuItem>\r
+                        </Menu>\r
+\r
+                        <Menu HorizontalAlignment="Right" Background="Transparent" VerticalAlignment="Center">\r
+                            <MenuItem>\r
+                                <MenuItem.Header>\r
+                                    <StackPanel Height="32" Orientation="Horizontal">\r
+                                        <Image Source="Images\Advanced.png" Width="20" Height="20" VerticalAlignment="Center" />\r
+                                        <TextBlock VerticalAlignment="Center"\r
                                            Text="{x:Static Properties:ResourcesUI.QueueView_Options}" Margin="5,0,0,0" />\r
-                                    <Path Height="5"\r
+                                        <Path Height="5"\r
                                       Margin="2,2,2,0"\r
                                       Data="M 0 0 L 4 4 L 8 0 Z"\r
                                       Fill="{DynamicResource GlyphBrush}" />\r
-                                </StackPanel>\r
-                            </MenuItem.Header>\r
+                                    </StackPanel>\r
+                                </MenuItem.Header>\r
 \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_ClearQueue}" />\r
-                            <Separator />\r
-                            <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />\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_ClearQueue}" />\r
+                                <Separator />\r
+                                <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />\r
 \r
-                        </MenuItem>\r
-                    </Menu>\r
+                            </MenuItem>\r
+                        </Menu>\r
 \r
-                </StackPanel>\r
+                    </StackPanel>\r
 \r
-            </DockPanel>\r
-        </ToolBar>\r
+                </DockPanel>\r
+            </ToolBar>\r
 \r
-        <StackPanel Grid.Row="1" Margin="10,20,10,0">\r
-            <TextBlock Text="{Binding JobsPending}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis" />\r
-            <TextBlock Text="{Binding JobStatus}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis"/>\r
-        </StackPanel>\r
+            <StackPanel Grid.Row="1" Margin="10,20,10,0">\r
+                <TextBlock Text="{Binding JobsPending}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis" />\r
+                <TextBlock Text="{Binding JobStatus}" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis"/>\r
+            </StackPanel>\r
 \r
-        <ListBox Grid.Row="2" Tag="{Binding}"\r
+            <ListBox Grid.Row="2" Tag="{Binding}"\r
                  Margin="10,20,10,10"\r
                  dd:DragDrop.DropHandler="{Binding}"\r
                  dd:DragDrop.IsDragSource="True"\r
                  SelectedItem="{Binding SelectedTask}"\r
                  SelectionMode="Extended">\r
 \r
-            <i:Interaction.Triggers>\r
-                <commands:InputBindingTrigger>\r
-                    <commands:InputBindingTrigger.InputBinding>\r
-                        <KeyBinding Key="Delete"/>\r
-                    </commands:InputBindingTrigger.InputBinding>\r
-                    <cal:ActionMessage MethodName="RemoveSelectedJobs" />\r
-                </commands:InputBindingTrigger>\r
-            </i:Interaction.Triggers>\r
-\r
-            <ListBox.ContextMenu>\r
-                <ContextMenu cal:Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}" Opened="ContextMenu_OnOpened">\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
-                    <Separator />\r
-                    <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenSourceDir}" x:Name="openSourceDir" Click="OpenSourceDir_OnClick" />\r
-                    <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenDestDir}" x:Name="openDestDir" Click="OpenDestDir_OnClick" />\r
-                    <Separator />\r
-                    <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />\r
-                </ContextMenu>\r
-            </ListBox.ContextMenu>\r
-\r
-            <ListBox.ItemContainerStyle>\r
-                <Style TargetType="{x:Type ListBoxItem}">\r
-                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />\r
-                    <Setter Property="Margin" Value="0,0,0,1" />\r
-                    <Setter Property="ToolTip">\r
-                        <Setter.Value>\r
-                            <Grid MaxWidth="650" Margin="0,5,0,5" Style="{StaticResource LongToolTipHolder}">\r
-                                <Grid.Resources>\r
-                                    <Style TargetType="TextBlock">\r
-                                        <Setter Property="Margin" Value="0,5,0,5" />\r
-                                    </Style>\r
-                                </Grid.Resources>\r
-\r
-                                <Grid.RowDefinitions>\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                    <RowDefinition Height="Auto" />\r
-                                </Grid.RowDefinitions>\r
-\r
-                                <Grid.ColumnDefinitions>\r
-                                    <ColumnDefinition Width="95" />\r
-                                    <ColumnDefinition Width="*" />\r
-                                </Grid.ColumnDefinitions>\r
+                <i:Interaction.Triggers>\r
+                    <commands:InputBindingTrigger>\r
+                        <commands:InputBindingTrigger.InputBinding>\r
+                            <KeyBinding Key="Delete"/>\r
+                        </commands:InputBindingTrigger.InputBinding>\r
+                        <cal:ActionMessage MethodName="RemoveSelectedJobs" />\r
+                    </commands:InputBindingTrigger>\r
+                </i:Interaction.Triggers>\r
+\r
+                <ListBox.ContextMenu>\r
+                    <ContextMenu cal:Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}" Opened="ContextMenu_OnOpened">\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
+                        <Separator />\r
+                        <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenSourceDir}" x:Name="openSourceDir" Click="OpenSourceDir_OnClick" />\r
+                        <MenuItem Header="{x:Static Properties:ResourcesUI.QueueView_OpenDestDir}" x:Name="openDestDir" Click="OpenDestDir_OnClick" />\r
+                        <Separator />\r
+                        <MenuItem cal:Message.Attach="[Event Click] = [Action Export]" Header="{x:Static Properties:ResourcesUI.QueueView_Export}" />\r
+                    </ContextMenu>\r
+                </ListBox.ContextMenu>\r
+\r
+                <ListBox.ItemContainerStyle>\r
+                    <Style TargetType="{x:Type ListBoxItem}">\r
+                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />\r
+                        <Setter Property="Margin" Value="0,0,0,1" />\r
+                        <Setter Property="ToolTip">\r
+                            <Setter.Value>\r
+                                <Grid MaxWidth="650" Margin="0,5,0,5" Style="{StaticResource LongToolTipHolder}">\r
+                                    <Grid.Resources>\r
+                                        <Style TargetType="TextBlock">\r
+                                            <Setter Property="Margin" Value="0,5,0,5" />\r
+                                        </Style>\r
+                                    </Grid.Resources>\r
+\r
+                                    <Grid.RowDefinitions>\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                        <RowDefinition Height="Auto" />\r
+                                    </Grid.RowDefinitions>\r
+\r
+                                    <Grid.ColumnDefinitions>\r
+                                        <ColumnDefinition Width="95" />\r
+                                        <ColumnDefinition Width="*" />\r
+                                    </Grid.ColumnDefinitions>\r
+\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0" />\r
+                                    <TextBlock Text="{Binding Task.Source}" TextWrapping="Wrap" Grid.Row="0" Grid.Column="1" />\r
+\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" VerticalAlignment="Top" Grid.Row="1" Grid.Column="0" />\r
+                                    <TextBlock Text="{Binding Task.Destination}" TextWrapping="Wrap" Grid.Row="1" Grid.Column="1" />\r
+\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_PictureSettings}" VerticalAlignment="Top" Grid.Row="2" Grid.Column="0" />\r
+                                    <TextBlock Text="{Binding Task, Converter={StaticResource pictureSettingsDescConverter}}" TextWrapping="Wrap" Grid.Row="2" Grid.Column="1"  />\r
+\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Video}" Grid.Row="3" Grid.Column="0" />\r
+                                    <TextBlock Text="{Binding Task, Converter={StaticResource videoOptionsTooltipConverter}}" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap"  />\r
+\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Audio}"  Grid.Row="4" Grid.Column="0"/>\r
+                                    <TextBlock Text="{Binding Task.AudioTracks, Converter={StaticResource audioTrackDisplayConverter}}"\r
+                                           Grid.Row="4" Grid.Column="1"/>\r
 \r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0" />\r
-                                <TextBlock Text="{Binding Task.Source}" TextWrapping="Wrap" Grid.Row="0" Grid.Column="1" />\r
+                                    <TextBlock FontWeight="Bold" VerticalAlignment="Top" Text="{x:Static Properties:ResourcesUI.QueueView_Subtitles}" Grid.Row="5" Grid.Column="0"  />\r
+                                    <TextBlock Text="{Binding Task.SubtitleTracks, Converter={StaticResource subtitleTrackDisplayConverter}}"\r
+                                           Grid.Row="5" Grid.Column="1" />\r
 \r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" VerticalAlignment="Top" Grid.Row="1" Grid.Column="0" />\r
-                                <TextBlock Text="{Binding Task.Destination}" TextWrapping="Wrap" Grid.Row="1" Grid.Column="1" />\r
+                                    <TextBlock FontWeight="Bold" VerticalAlignment="Top" Grid.Row="6" Grid.Column="0"  Text="{x:Static Properties:ResourcesUI.QueueView_Advanced}" />\r
+                                    <TextBlock Text="{Binding Task, Converter={StaticResource encoderOptionsTooltipConverter}}" Grid.Row="6" Grid.Column="1" TextWrapping="Wrap"  />\r
+                                </Grid>\r
 \r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_PictureSettings}" VerticalAlignment="Top" Grid.Row="2" Grid.Column="0" />\r
-                                <TextBlock Text="{Binding Task, Converter={StaticResource pictureSettingsDescConverter}}" TextWrapping="Wrap" Grid.Row="2" Grid.Column="1"  />\r
+                            </Setter.Value>\r
+                        </Setter>\r
 \r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Video}" Grid.Row="3" Grid.Column="0" />\r
-                                <TextBlock Text="{Binding Task, Converter={StaticResource videoOptionsTooltipConverter}}" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap"  />\r
+                    </Style>\r
+                </ListBox.ItemContainerStyle>\r
 \r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Audio}"  Grid.Row="4" Grid.Column="0"/>\r
-                                <TextBlock Text="{Binding Task.AudioTracks, Converter={StaticResource audioTrackDisplayConverter}}"\r
-                                           Grid.Row="4" Grid.Column="1"/>\r
+                <ListBox.ItemTemplate>\r
+                    <DataTemplate x:Name="QueueItemTemplate">\r
 \r
-                                <TextBlock FontWeight="Bold" VerticalAlignment="Top" Text="{x:Static Properties:ResourcesUI.QueueView_Subtitles}" Grid.Row="5" Grid.Column="0"  />\r
-                                <TextBlock Text="{Binding Task.SubtitleTracks, Converter={StaticResource subtitleTrackDisplayConverter}}"\r
-                                           Grid.Row="5" Grid.Column="1" />\r
+                        <Grid HorizontalAlignment="Stretch">\r
+                            <Grid.ColumnDefinitions>\r
+                                <ColumnDefinition Width="40" />\r
+                                <ColumnDefinition Width="*" />\r
+                                <ColumnDefinition Width="Auto" />\r
+                            </Grid.ColumnDefinitions>\r
 \r
-                                <TextBlock FontWeight="Bold" VerticalAlignment="Top" Grid.Row="6" Grid.Column="0"  Text="{x:Static Properties:ResourcesUI.QueueView_Advanced}" />\r
-                                <TextBlock Text="{Binding Task, Converter={StaticResource encoderOptionsTooltipConverter}}" Grid.Row="6" Grid.Column="1" TextWrapping="Wrap"  />\r
-                            </Grid>\r
+                            <!--  Marker  -->\r
+                            <Image Grid.Column="0" Width="16" Height="16" SnapsToDevicePixels="True">\r
+\r
+                                <Image.LayoutTransform>\r
+                                    <RotateTransform CenterX="8" CenterY="8" Angle="0"/>\r
+                                </Image.LayoutTransform>\r
+\r
+                                <Image.Style>\r
+                                    <Style TargetType="{x:Type Image}">\r
+                                        <Style.Triggers>\r
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Waiting">\r
+                                                <Setter Property="Source" Value="Images\Movies.png" />\r
+                                            </DataTrigger>\r
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="In Progress">\r
+                                                <Setter Property="Source" Value="Images\Working0.png" />\r
+                                                <DataTrigger.EnterActions>\r
+                                                    <BeginStoryboard>\r
+                                                        <Storyboard>\r
+                                                            <DoubleAnimation Duration="0:0:2" To="180" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)" RepeatBehavior="Forever" />\r
+                                                        </Storyboard>\r
+                                                    </BeginStoryboard>\r
+                                                </DataTrigger.EnterActions>\r
+                                                <DataTrigger.ExitActions>\r
+                                                    <BeginStoryboard>\r
+                                                        <Storyboard>\r
+                                                            <DoubleAnimation Duration="0:0:0" To="0" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)"/>\r
+                                                        </Storyboard>\r
+                                                    </BeginStoryboard>\r
+                                                </DataTrigger.ExitActions>\r
+                                            </DataTrigger>\r
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Completed">\r
+                                                <Setter Property="Source" Value="Images\Complete.png" />\r
+                                            </DataTrigger>\r
+                                            <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Error">\r
+                                                <Setter Property="Source" Value="Images\WarningSmall.png" />\r
+                                            </DataTrigger>\r
+                                        </Style.Triggers>\r
+                                    </Style>\r
+                                </Image.Style>\r
+                            </Image>\r
 \r
-                        </Setter.Value>\r
-                    </Setter>\r
-          \r
-                </Style>\r
-            </ListBox.ItemContainerStyle>\r
-\r
-            <ListBox.ItemTemplate>\r
-                <DataTemplate x:Name="QueueItemTemplate">\r
-                    \r
-                    <Grid HorizontalAlignment="Stretch">\r
-                        <Grid.ColumnDefinitions>\r
-                            <ColumnDefinition Width="40" />\r
-                            <ColumnDefinition Width="*" />\r
-                            <ColumnDefinition Width="Auto" />\r
-                        </Grid.ColumnDefinitions>\r
-\r
-                        <!--  Marker  -->\r
-                        <Image Grid.Column="0" Width="16" Height="16" SnapsToDevicePixels="True">\r
-\r
-                            <Image.LayoutTransform>\r
-                                <RotateTransform CenterX="8" CenterY="8" Angle="0"/>\r
-                            </Image.LayoutTransform>\r
-\r
-                            <Image.Style>\r
-                                <Style TargetType="{x:Type Image}">\r
-                                    <Style.Triggers>\r
-                                        <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Waiting">\r
-                                            <Setter Property="Source" Value="Images\Movies.png" />\r
-                                        </DataTrigger>\r
-                                        <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="In Progress">\r
-                                            <Setter Property="Source" Value="Images\Working0.png" />\r
-                                            <DataTrigger.EnterActions>\r
-                                                <BeginStoryboard>\r
-                                                    <Storyboard>\r
-                                                        <DoubleAnimation Duration="0:0:2" To="180" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)" RepeatBehavior="Forever" />\r
-                                                    </Storyboard>\r
-                                                </BeginStoryboard>\r
-                                            </DataTrigger.EnterActions>\r
-                                            <DataTrigger.ExitActions>\r
-                                                <BeginStoryboard>\r
-                                                    <Storyboard>\r
-                                                        <DoubleAnimation Duration="0:0:0" To="0" Storyboard.TargetProperty="(Image.LayoutTransform).(RotateTransform.Angle)"/>\r
-                                                    </Storyboard>\r
-                                                </BeginStoryboard>\r
-                                            </DataTrigger.ExitActions>\r
-                                        </DataTrigger>\r
-                                        <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Completed">\r
-                                            <Setter Property="Source" Value="Images\Complete.png" />\r
-                                        </DataTrigger>\r
-                                        <DataTrigger Binding="{Binding Status, Converter={StaticResource enumComboConverter}}" Value="Error">\r
-                                            <Setter Property="Source" Value="Images\WarningSmall.png" />\r
-                                        </DataTrigger>\r
-                                    </Style.Triggers>\r
-                                </Style>\r
-                            </Image.Style>\r
-                        </Image>\r
-\r
-                        <!--  Settings  -->\r
-                        <StackPanel Grid.Column="1"\r
+                            <!--  Settings  -->\r
+                            <StackPanel Grid.Column="1"\r
                                     Margin="0,5,0,5"\r
                                     HorizontalAlignment="Stretch">\r
-                            <StackPanel Orientation="Horizontal">\r
-                                <TextBlock FontWeight="Bold" Text="Title: " />\r
-                                <TextBlock Text="{Binding Task.Title}" />\r
+                                <StackPanel Orientation="Horizontal">\r
+                                    <TextBlock FontWeight="Bold" Text="Title: " />\r
+                                    <TextBlock Text="{Binding Task.Title}" />\r
 \r
-                                <TextBlock Margin="10,0,0,0"\r
+                                    <TextBlock Margin="10,0,0,0"\r
                                            FontWeight="Bold"\r
                                            Text="{Binding Task.PointToPointMode}" />\r
-                                <TextBlock Text=": " />\r
-                                <TextBlock Text="{Binding Task.StartPoint}" />\r
-                                <TextBlock Margin="5,0,5,0" Text="to" />\r
-                                <TextBlock Text="{Binding Task.EndPoint}" />\r
-                            </StackPanel>\r
+                                    <TextBlock Text=": " />\r
+                                    <TextBlock Text="{Binding Task.StartPoint}" />\r
+                                    <TextBlock Margin="5,0,5,0" Text="to" />\r
+                                    <TextBlock Text="{Binding Task.EndPoint}" />\r
+                                </StackPanel>\r
 \r
-                            <!--  TODO Support Drive Label Name  -->\r
-                            <StackPanel Orientation="Horizontal">\r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" />\r
-                                <TextBlock Text="{Binding Task.Source, Converter={StaticResource filePathToFilenameConverter}}" />\r
-                            </StackPanel>\r
+                                <!--  TODO Support Drive Label Name  -->\r
+                                <StackPanel Orientation="Horizontal">\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Source}" />\r
+                                    <TextBlock Text="{Binding Task.Source, Converter={StaticResource filePathToFilenameConverter}}" />\r
+                                </StackPanel>\r
 \r
-                            <StackPanel Orientation="Horizontal">\r
-                                <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" />\r
-                                <TextBlock Text="{Binding Task.Destination, Converter={StaticResource filePathToFilenameConverter}}" />\r
+                                <StackPanel Orientation="Horizontal">\r
+                                    <TextBlock FontWeight="Bold" Text="{x:Static Properties:ResourcesUI.QueueView_Destination}" />\r
+                                    <TextBlock Text="{Binding Task.Destination, Converter={StaticResource filePathToFilenameConverter}}" />\r
+                                </StackPanel>\r
                             </StackPanel>\r
-                        </StackPanel>\r
 \r
-                        <!--  Delete  -->\r
-                        <Grid Grid.Column="2"\r
+                            <!--  Delete  -->\r
+                            <Grid Grid.Column="2"\r
                               Margin="10,0,10,0"\r
                               VerticalAlignment="Center">\r
 \r
-                            <Grid.RowDefinitions>\r
-                                <RowDefinition Height="Auto" />\r
-                            </Grid.RowDefinitions>\r
+                                <Grid.RowDefinitions>\r
+                                    <RowDefinition Height="Auto" />\r
+                                </Grid.RowDefinitions>\r
 \r
-                            <Grid.ColumnDefinitions>\r
-                                <ColumnDefinition Width="Auto" />\r
-                                <ColumnDefinition Width="Auto" />\r
-                                <ColumnDefinition Width="Auto" />\r
-                            </Grid.ColumnDefinitions>\r
+                                <Grid.ColumnDefinitions>\r
+                                    <ColumnDefinition Width="Auto" />\r
+                                    <ColumnDefinition Width="Auto" />\r
+                                    <ColumnDefinition Width="Auto" />\r
+                                </Grid.ColumnDefinitions>\r
 \r
-                            <Button Visibility="{Binding Status, Converter={StaticResource queueStatusVisConverter}}"\r
+                                <Button Visibility="{Binding Status, Converter={StaticResource queueStatusVisConverter}}"\r
                                     Grid.Row="0" Grid.Column="0" Margin="0,5,0,0">\r
-                                <Button.Template>\r
-                                    <ControlTemplate>\r
-                                        <Image Width="20"  \r
+                                    <Button.Template>\r
+                                        <ControlTemplate>\r
+                                            <Image Width="20"  \r
                                                Height="20" VerticalAlignment="Center"\r
                                                Source="Images/Refresh.ico"\r
                                                ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_ResetJobStatus}">\r
-                                        </Image>\r
-                                    </ControlTemplate>\r
-                                </Button.Template>\r
-                                <i:Interaction.Triggers>\r
-                                    <i:EventTrigger EventName="Click">\r
-                                        <cal:ActionMessage MethodName="RetryJob">\r
-                                            <cal:Parameter Value="{Binding}" />\r
-                                        </cal:ActionMessage>\r
-                                    </i:EventTrigger>\r
-                                </i:Interaction.Triggers>\r
-                            </Button>\r
-\r
-                            <Button Grid.Row="0" Grid.Column="1" Margin="10,5,0,0">\r
-                                <Button.Template>\r
-                                    <ControlTemplate>\r
-                                        <Image Width="20" \r
+                                            </Image>\r
+                                        </ControlTemplate>\r
+                                    </Button.Template>\r
+                                    <i:Interaction.Triggers>\r
+                                        <i:EventTrigger EventName="Click">\r
+                                            <cal:ActionMessage MethodName="RetryJob">\r
+                                                <cal:Parameter Value="{Binding}" />\r
+                                            </cal:ActionMessage>\r
+                                        </i:EventTrigger>\r
+                                    </i:Interaction.Triggers>\r
+                                </Button>\r
+\r
+                                <Button Grid.Row="0" Grid.Column="1" Margin="10,5,0,0">\r
+                                    <Button.Template>\r
+                                        <ControlTemplate>\r
+                                            <Image Width="20" \r
                                                Height="20" VerticalAlignment="Center"\r
                                                Source="Images/Options24.png"\r
                                                ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_SendJobBack}">\r
-                                        </Image>\r
-                                    </ControlTemplate>\r
-                                </Button.Template>\r
-                                <i:Interaction.Triggers>\r
-                                    <i:EventTrigger EventName="Click">\r
-                                        <cal:ActionMessage MethodName="EditJob">\r
-                                            <cal:Parameter Value="{Binding}" />\r
-                                        </cal:ActionMessage>\r
-                                    </i:EventTrigger>\r
-                                </i:Interaction.Triggers>\r
-                            </Button>\r
-\r
-                            <Button Grid.Row="0" Grid.Column="2" Margin="10,5,0,0">\r
-                                <Button.Template>\r
-                                    <ControlTemplate>\r
-                                        <Image Width="20" \r
+                                            </Image>\r
+                                        </ControlTemplate>\r
+                                    </Button.Template>\r
+                                    <i:Interaction.Triggers>\r
+                                        <i:EventTrigger EventName="Click">\r
+                                            <cal:ActionMessage MethodName="EditJob">\r
+                                                <cal:Parameter Value="{Binding}" />\r
+                                            </cal:ActionMessage>\r
+                                        </i:EventTrigger>\r
+                                    </i:Interaction.Triggers>\r
+                                </Button>\r
+\r
+                                <Button Grid.Row="0" Grid.Column="2" Margin="10,5,0,0">\r
+                                    <Button.Template>\r
+                                        <ControlTemplate>\r
+                                            <Image Width="20" \r
                                                Height="20" VerticalAlignment="Center" \r
                                                Source="Images/delete.png"\r
                                                ToolTip="{x:Static Properties:ResourcesTooltips.QueueView_DeleteJob}">\r
-                                        </Image>\r
-                                    </ControlTemplate>\r
-                                </Button.Template>\r
-                                <i:Interaction.Triggers>\r
-                                    <i:EventTrigger EventName="Click">\r
-                                        <cal:ActionMessage MethodName="RemoveJob">\r
-                                            <cal:Parameter Value="{Binding}" />\r
-                                        </cal:ActionMessage>\r
-                                    </i:EventTrigger>\r
-                                </i:Interaction.Triggers>\r
-                            </Button>\r
+                                            </Image>\r
+                                        </ControlTemplate>\r
+                                    </Button.Template>\r
+                                    <i:Interaction.Triggers>\r
+                                        <i:EventTrigger EventName="Click">\r
+                                            <cal:ActionMessage MethodName="RemoveJob">\r
+                                                <cal:Parameter Value="{Binding}" />\r
+                                            </cal:ActionMessage>\r
+                                        </i:EventTrigger>\r
+                                    </i:Interaction.Triggers>\r
+                                </Button>\r
 \r
 \r
-                        </Grid>\r
+                            </Grid>\r
 \r
-                    </Grid>\r
-                </DataTemplate>\r
-            </ListBox.ItemTemplate>\r
-        </ListBox>\r
+                        </Grid>\r
+                    </DataTemplate>\r
+                </ListBox.ItemTemplate>\r
+            </ListBox>\r
 \r
 \r
+        </Grid>\r
     </Grid>\r
 </Window>\r
 \r