<UserControl x:Class="HandBrakeWPF.Views.AudioView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:Audio="clr-namespace:HandBrakeWPF.Converters.Audio"
             xmlns:cal="http://www.caliburnproject.org"
             xmlns:Conveters="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:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
             xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
             d:DesignHeight="170"
             d:DesignWidth="616"
             mc:Ignorable="d">

    <UserControl.Resources>
        <Conveters:EnumComboConverter x:Key="enumComboConverter" />
        <Conveters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />
        <Conveters:BooleanToHiddenVisibilityConverter x:Key="boolToHiddenVisConverter" />
        <Audio:AudioBitrateConverter x:Key="audioBitrateConverter" />
        <Audio:AudioEncoderConverter x:Key="audioEncoderConverter" />
    </UserControl.Resources>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <TextBlock Grid.Row="0"
                   Margin="10,5,0,0"
                   FontWeight="Bold"
                   Text="Audio Tracks" />

        <Grid Grid.Row="1" Margin="10,5,10,0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Button Grid.Column="0"
                    MaxWidth="95"
                    Margin="0,0,10,0"
                    cal:Message.Attach="[Event Click] = [Action Add]"
                    Content="Add Track" />

            <StackPanel Grid.Column="2"
                        Orientation="Horizontal"
                        Visibility="{Binding ShowPassthruOptions,
                                             Converter={StaticResource boolToVisConverter}}">
                <TextBlock Margin="5,0,5,0" Text="Auto Passthru:" VerticalAlignment="Center" />
                <CheckBox Margin="0,0,5,0"
                          Content="MP3" VerticalAlignment="Center"    
                          IsChecked="{Binding Task.AllowedPassthruOptions.AudioAllowMP3Pass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="AAC" VerticalAlignment="Center"
                          IsChecked="{Binding Task.AllowedPassthruOptions.AudioAllowAACPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="AC3" VerticalAlignment="Center"
                          IsChecked="{Binding Task.AllowedPassthruOptions.AudioAllowAC3Pass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="DTS" VerticalAlignment="Center"
                          IsChecked="{Binding Task.AllowedPassthruOptions.AudioAllowDTSPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="DTSHD" VerticalAlignment="Center"
                          IsChecked="{Binding Task.AllowedPassthruOptions.AudioAllowDTSHDPass}" />
                <TextBlock Margin="5,0,5,0" Text="Fallback:" />

                <ComboBox Grid.Column="3" VerticalAlignment="Center"
                                      Width="100"
                                      Height="22"
                                      Margin="10,0,5,0">
                    <ComboBox.SelectedItem>
                        <MultiBinding Converter="{StaticResource audioEncoderConverter}">
                            <Binding Path="Task.AllowedPassthruOptions.AudioEncoderFallback" />
                        </MultiBinding>
                    </ComboBox.SelectedItem>
                    <ComboBox.ItemsSource>
                        <MultiBinding Converter="{StaticResource audioEncoderConverter}" ConverterParameter="True">
                            <Binding Path="DataContext.AudioEncoders" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
                            <Binding Path="DataContext.Task" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
                        </MultiBinding>
                    </ComboBox.ItemsSource>
                </ComboBox>

            </StackPanel>

        </Grid>

        <ListBox Grid.Row="2"
                 Margin="10,10,10,10"
                 Background="LightGray"
                 dd:DragDrop.DropHandler="{Binding}"
                 dd:DragDrop.IsDragSource="True"
                 dd:DragDrop.IsDropTarget="True"
                 ItemsSource="{Binding Task.AudioTracks}"
                 SelectionMode="Extended">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                    <Setter Property="Background" Value="WhiteSmoke" />
                    <Setter Property="Margin" Value="0,0,0,1" />
                </Style>
            </ListBox.ItemContainerStyle>

            <ListBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Add New Track" cal:Message.Attach="[Event Click] = [Action Add]" />
                    <MenuItem Header="Add All Remaining Tracks" cal:Message.Attach="[Event Click] = [Action AddAllRemaining]" />
                    <MenuItem Header="Add All Remaining Selected Languages" cal:Message.Attach="[Event Click] = [Action AddAllRemainingForSelectedLanguages]" />
                    <Separator />
                    <MenuItem Header="Clear All" cal:Message.Attach="[Event Click] = [Action Clear]" />
                    <Separator />
                    <MenuItem Header="Configure Default Behaviours" cal:Message.Attach="[Event Click] = [Action SetDefaultBehaviour]" />
                </ContextMenu>
            </ListBox.ContextMenu>

            <ListBox.ItemTemplate>
                <DataTemplate>
                   
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <!--  Marker  -->
                        <Image Grid.Column="0" Grid.Row="0"
                               Width="16"
                               Height="16"
                               Margin="10,0,10,0"
                               Source="Images/Movies.png" />

                        <!--  Settings  -->
                        <Grid Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" MaxWidth="160" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <Grid.RowDefinitions>
                                <RowDefinition Height="28" />
                                <RowDefinition Height="28" />
                            </Grid.RowDefinitions>

                            <!--  Row 1  -->

                            <TextBlock Grid.Column="0"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Source" />
                            <ComboBox Grid.Column="1"
                                      Height="22"
                                      MaxWidth="150"
                                      Margin="5,0,5,0"
                                      HorizontalAlignment="Stretch"
                                      ItemsSource="{Binding DataContext.SourceTracks,
                                                            RelativeSource={RelativeSource FindAncestor,
                                                                                           AncestorType={x:Type UserControl}}}"
                                      SelectedItem="{Binding ScannedTrack}" />

                            <TextBlock Grid.Column="2"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Codec" />
                            <ComboBox Grid.Column="3"
                                      Width="100"
                                      Height="22"
                                      Margin="5,0,5,0">
                                <ComboBox.SelectedItem>
                                    <MultiBinding Converter="{StaticResource audioEncoderConverter}">
                                        <Binding Path="Encoder" />
                                    </MultiBinding>
                                </ComboBox.SelectedItem>
                                <ComboBox.ItemsSource>
                                    <MultiBinding Converter="{StaticResource audioEncoderConverter}">
                                        <Binding Path="DataContext.AudioEncoders" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
                                        <Binding Path="DataContext.Task" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
                                    </MultiBinding>
                                </ComboBox.ItemsSource>
                            </ComboBox>

                            <TextBlock Grid.Column="4"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Bitrate"
                                       Visibility="{Binding CannotSetBitrate,
                                                            Converter={StaticResource boolToVisConverter},
                                                            ConverterParameter=true}" />
                            <ComboBox Grid.Column="5"
                                      Width="70"
                                      Height="22"
                                      Margin="5,0,5,0"
                                      ItemsSource="{Binding TrackReference,
                                                            Converter={StaticResource audioBitrateConverter}}"
                                      SelectedItem="{Binding Bitrate}"
                                      Visibility="{Binding CannotSetBitrate,
                                                           Converter={StaticResource boolToVisConverter},
                                                           ConverterParameter=true}" />

                            <TextBlock Grid.Column="6"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Samplerate"
                                       Visibility="{Binding IsPassthru,
                                                            Converter={StaticResource boolToVisConverter},
                                                            ConverterParameter=true}" />
                            <ComboBox Grid.Column="7"
                                      Width="70"
                                      Height="22"
                                      Margin="5,0,5,0"
                                      ItemsSource="{Binding DataContext.SampleRates,
                                                            RelativeSource={RelativeSource FindAncestor,
                                                                                           AncestorType={x:Type UserControl}}}"
                                      SelectedItem="{Binding SampleRateDisplayValue}"
                                      Visibility="{Binding IsPassthru,
                                                           Converter={StaticResource boolToVisConverter},
                                                           ConverterParameter=true}" />

                            <!--  Row 2  -->
                            <TextBlock Grid.Row="1"
                                       Grid.Column="0"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Mixdown"
                                       Visibility="{Binding IsPassthru,
                                                            Converter={StaticResource boolToVisConverter},
                                                            ConverterParameter=true}" />
                            <ComboBox Grid.Row="1"
                                      Grid.Column="1"
                                      Height="22"
                                      MaxWidth="300"
                                      Margin="5,0,5,0"
                                      HorizontalAlignment="Stretch"
                                      ItemsSource="{Binding DataContext.AudioMixdowns,
                                                            Converter={StaticResource enumComboConverter},
                                                            RelativeSource={RelativeSource FindAncestor,
                                                                                           AncestorType={x:Type UserControl}}}"
                                      SelectedItem="{Binding MixDown,
                                                             Converter={StaticResource enumComboConverter}}"
                                      Visibility="{Binding IsPassthru,
                                                           Converter={StaticResource boolToVisConverter},
                                                           ConverterParameter=true}" />

                            <TextBlock Grid.Row="1"
                                       Grid.Column="2"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="DRC"
                                       Visibility="{Binding IsPassthru,
                                                            Converter={StaticResource boolToVisConverter},
                                                            ConverterParameter=true}" />

                            <NumericUpDown:NumericUpDown Name="drcNumericCtl"
                                                         Grid.Row="1"
                                                         Grid.Column="3"
                                                         Width="45"
                                                         Margin="5,0,5,0"
                                                         HorizontalAlignment="Left"
                                                         DecimalPlace="1"
                                                         LargeChange="0.1"
                                                         Maximum="4"
                                                         Minimum="0"
                                                         SmallChange="0.1"
                                                         Visibility="{Binding IsPassthru,
                                                                              Converter={StaticResource boolToHiddenVisConverter},
                                                                              ConverterParameter=true}"
                                                         Value="{Binding DRC,
                                                                         Mode=TwoWay}" />

                            <TextBlock Grid.Row="1"
                                       Grid.Column="4"
                                       VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Text="Gain"
                                       Visibility="{Binding IsPassthru,
                                                            Converter={StaticResource boolToVisConverter},
                                                            ConverterParameter=true}" />
                            <NumericUpDown:NumericUpDown Name="gainNumericCtl"
                                                         Grid.Row="1"
                                                         Grid.Column="5"
                                                         Width="45"
                                                         Margin="5,0,5,0"
                                                         HorizontalAlignment="Left"
                                                         DecimalPlace="0"
                                                         LargeChange="1"
                                                         Maximum="20"
                                                         Minimum="-20"
                                                         SmallChange="1"
                                                         Visibility="{Binding IsPassthru,
                                                                              Converter={StaticResource boolToHiddenVisConverter},
                                                                              ConverterParameter=true}"
                                                         Value="{Binding Gain,
                                                                         Mode=TwoWay}" />

                            <ToggleButton Name="advancedOptionsToggle" VerticalAlignment="Center" Grid.Column="6" Grid.Row="1" Grid.ColumnSpan="2"
                                          FontWeight="Bold" Height="22" Padding="4,0" HorizontalAlignment="Left" >
                                <ToggleButton.Style>
                                    <Style TargetType="{x:Type ToggleButton}">
                                        <Setter Property="Content" Value="Show Advanced"/>
                                        <Style.Triggers>
                                            <Trigger Property="IsChecked" Value="True">
                                                <Setter Property="Content" Value="Hide Advanced"/>
                                            </Trigger>
                                            <Trigger Property="IsChecked" Value="False">
                                                <Setter Property="Content" Value="Show Advanced"/>
                                            </Trigger>
                                        </Style.Triggers>
                                    </Style>
                                </ToggleButton.Style>
                            </ToggleButton>
 
                        </Grid>

                        <!--  Delete  -->
                        <StackPanel Grid.Column="2" Grid.Row="0" VerticalAlignment="Center">
                            <Image Width="16" Height="16" Margin="10,0,10,0" Source="Images/delete.png">
                                <i:Interaction.Triggers>
                                    <i:EventTrigger EventName="MouseDown">
                                        <cal:ActionMessage MethodName="Remove">
                                            <cal:Parameter Value="{Binding}" />
                                        </cal:ActionMessage>
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
                            </Image>
                        </StackPanel>

                        <!-- Hidden Row -->
                        <Grid Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" Visibility="{Binding IsChecked, ElementName=advancedOptionsToggle, Converter={StaticResource boolToVisConverter}}">
                            <StackPanel Orientation="Horizontal" Margin="0,5,0,5" >
                                <TextBlock Text="Track Name:" VerticalAlignment="Center" FontWeight="Bold" Margin="0,0,5,0" />
                                <TextBox Text="{Binding TrackName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="138" Height="22" />
                            </StackPanel>
                                
                        </Grid>
                    </Grid>

                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

    </Grid>
</UserControl>
