<UserControl x:Class="HandBrakeWPF.Views.AudioDefaultsView"
             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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:helpers="clr-namespace:HandBrakeWPF.Helpers"
             xmlns:Properties="clr-namespace:HandBrakeWPF.Properties"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
             d:DesignHeight="450"
             d:DesignWidth="800"
             mc:Ignorable="d"
             x:Name="audioDefaultsTab">

    <UserControl.Resources>
        <Conveters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />
        <Audio:AudioEncoderConverter x:Key="audioEncoderConverter" />
        <Audio:AudioBehaviourConverter x:Key="audioBehaviourConverter" />
        <Audio:AudioTrackDefaultBehaviourConverter x:Key="audioTrackDefaultBehaviourConverter" />
        <Conveters:BooleanToHiddenVisibilityConverter x:Key="boolToHiddenVisConverter" />
        <Audio:AudioRateTypeConverter x:Key="audioRateTypeConverter" />
    </UserControl.Resources>


    <Grid VerticalAlignment="Top" Margin="10,0,0,0">
        <Grid.RowDefinitions>
            <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" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <!-- Behaviour Dropowns -->
        <Grid Margin="0,0,0,0" Grid.Row="0" Grid.Column="0" >
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <!-- Audio -->
            <TextBlock Text="{x:Static Properties:Resources.AudioDefaultView_Behaviours}" FontWeight="Bold" Margin="0,10,0,5" />

            <TextBlock Text="{x:Static Properties:Resources.AudioView_TrackSelectionBehaviour}" Grid.Column="0" Grid.Row="1" Margin="0,0,5,0" HorizontalAlignment="Left"  VerticalAlignment="Center" />
            <ComboBox Name="autoAudioMode" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left"
                          ItemsSource="{Binding AudioBehaviourModeList, Converter={StaticResource audioBehaviourConverter}}" 
                          SelectedItem="{Binding AudioBehaviours.SelectedBehaviour, Converter={StaticResource audioBehaviourConverter}}" Width="210" Margin="0,0,5,0" />

            <TextBlock Text="{x:Static Properties:Resources.AudioView_TrackSettingDefaultBehaviour}" Grid.Column="0" Grid.Row="2" Margin="0,5,5,0" HorizontalAlignment="Left"  VerticalAlignment="Center" />
            <ComboBox Name="audioTrackBeahaviorMode" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left"
                           ItemsSource="{Binding AudioTrackDefaultBehaviourModeList, Converter={StaticResource audioTrackDefaultBehaviourConverter}}" 
                           SelectedItem="{Binding AudioBehaviours.SelectedTrackDefaultBehaviour, Converter={StaticResource audioTrackDefaultBehaviourConverter}}" Width="210" Margin="0,5,5,0" />
        </Grid>

        <!-- Language Selection -->
        <TextBlock Text="{x:Static Properties:Resources.Shared_ChooseLanguages}" Margin="0,10,0,0" Grid.Row="1" Grid.Column="0"  />
        <Grid Margin="20,5,0,0" Grid.Row="2" Grid.Column="0" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <StackPanel Orientation="Horizontal">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <StackPanel Orientation="Vertical" Grid.Column="0">
                        <TextBlock Text="{x:Static Properties:Resources.Shared_AvailableLanguages}" Margin="0,0,0,5"/>
                        <ListBox Name="availableLanguages" ItemsSource="{Binding AvailableLanguages}" 
                                     helpers:ListBoxHelper.SelectedItems="{Binding SelectedAvailableToMove}" 
                                             SelectionMode="Extended" Width="140" Height="120" />
                    </StackPanel>

                    <DockPanel Grid.Column="1" Margin="10,0,10,0">
                        <StackPanel Orientation="Vertical" VerticalAlignment="Center">
                            <Button Content="{x:Static Properties:Resources.Generic_MoveRight}"  VerticalAlignment="Center" Margin="0,0,0,5" cal:Message.Attach="[Event Click] = [Action LanguageMoveRight]" MaxWidth="90" />
                            <Button Content="{x:Static Properties:Resources.Generic_MoveLeft}"  VerticalAlignment="Center" Margin="0,0,0,5" cal:Message.Attach="[Event Click] = [Action LanguageMoveLeft]" MaxWidth="90" />
                            <Button Content="{x:Static Properties:Resources.Generic_Clear}" VerticalAlignment="Center" Margin="0,0,0,5" cal:Message.Attach="[Event Click] = [Action LanguageClearAll]" Width="80"/>
                        </StackPanel>
                    </DockPanel>

                    <StackPanel Orientation="Vertical" Grid.Column="2">
                        <TextBlock Text="{x:Static Properties:Resources.Shared_ChosenLangages}"  Margin="0,0,0,5"/>
                        <ListBox Name="selectedLangauges" ItemsSource="{Binding AudioBehaviours.SelectedLangauges}" 
                                     helpers:ListBoxHelper.SelectedItems="{Binding SelectedLangaugesToMove}" 
                                             SelectionMode="Extended" Width="140" Height="120"
                                             dd:DragDrop.DropHandler="{Binding}"
                                             dd:DragDrop.IsDragSource="True"
                                             dd:DragDrop.IsDropTarget="True"/>
                    </StackPanel>
                </Grid>
            </StackPanel>
        </Grid>


        <!-- Auto Passthru -->
        <StackPanel Orientation="Vertical" Margin="10,0,0,5"  Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Left">
            <TextBlock Text="{x:Static Properties:Resources.AudioView_AutoPassthruBehaviour}" FontWeight="Bold" Margin="0,10,0,5" />
            <StackPanel Margin="5,10,0,0"
                        Orientation="Vertical">
                <TextBlock Margin="5,0,5,0" Text="{x:Static Properties:Resources.AudioView_WhenAutoPassthru}" VerticalAlignment="Center" />
                <TextBlock Margin="5,0,5,0" Text="{x:Static Properties:Resources.AudioView_AllowPassThruOf}" VerticalAlignment="Center" />
            </StackPanel>
            <StackPanel Margin="10,10,0,0" 
                        Orientation="Vertical">
                <CheckBox Margin="0,0,5,0"
                          Content="MP3" VerticalAlignment="Center"    
                          IsChecked="{Binding AudioAllowMP3Pass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="AAC" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowAACPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="AC3" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowAC3Pass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="E-AC3" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowEAC3Pass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="DTS" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowDTSPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="DTSHD" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowDTSHDPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="TrueHD" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowTrueHDPass}" />
                <CheckBox Margin="0,0,5,0"
                          Content="FLAC" VerticalAlignment="Center"
                          IsChecked="{Binding AudioAllowFlacPass}" />
            </StackPanel>

            <StackPanel Orientation="Horizontal">
                <TextBlock Margin="10,0,5,0" Text="{x:Static Properties:Resources.AudioView_OtherwiseFallbackEncoder}" />

                <ComboBox VerticalAlignment="Center" Width="105" Height="22" Margin="5,0,5,0">
                    <ComboBox.SelectedItem>
                        <MultiBinding Converter="{StaticResource audioEncoderConverter}">
                            <Binding Path="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>
        </StackPanel>


        <!-- Tracks -->
        <TextBlock Text="{x:Static Properties:Resources.AudioDefaultsView_AutoAddTracks}" FontWeight="Bold" Margin="0,10,0,5" Grid.Row="3" Grid.Column="0" />
        <StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="0">
            <Button Content="{x:Static Properties:Resources.AudioDefaultsView_AddTrack}" cal:Message.Attach="[Event Click] = [Action AddTrack]" Margin="10,0,10,0" Padding="8,2"/>
            <Button Content="{x:Static Properties:Resources.AudioDefaultsView_Clear}" cal:Message.Attach="[Event Click] = [Action ClearTracks]" Padding="8,2"/>
        </StackPanel>

        <ListBox VerticalAlignment="Stretch" MinHeight="50"
                 Margin="10,10,10,10" Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="3"
                 dd:DragDrop.DropHandler="{Binding}"
                 dd:DragDrop.IsDragSource="True"
                 dd:DragDrop.IsDropTarget="True"
                 ItemsSource="{Binding BehaviourTracks}"
                 SelectionMode="Extended">

            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                    <Setter Property="Margin" Value="0,0,0,1" />
                </Style>
            </ListBox.ItemContainerStyle>

            <ListBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="{x:Static Properties:Resources.Generic_Clear}" cal:Message.Attach="[Event Click] = [Action ClearTracks]" />
                </ContextMenu>
            </ListBox.ContextMenu>

            <ListBox.ItemTemplate>
                <DataTemplate>

                    <Grid HorizontalAlignment="Stretch" Grid.IsSharedSizeScope="False">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <!--  Settings  -->
                        <Grid Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" Margin="0,5,0,5">
                            <Grid.ColumnDefinitions>
                                <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" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

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

                            <!--  Row 1  -->
                            <TextBlock Grid.Column="2" VerticalAlignment="Center" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_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>

                            <ComboBox Grid.Column="4" Height="22" Width="65" HorizontalAlignment="Stretch"
                                      ItemsSource="{Binding AudioEncoderRateTypes, Converter={StaticResource audioRateTypeConverter}}"
                                      SelectedItem="{Binding EncoderRateType, Converter={StaticResource audioRateTypeConverter}}"
                                      Visibility="{Binding IsRateTypeVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />

                            <ComboBox Grid.Column="5" Width="55" Height="22" Margin="5,0,5,0" ItemsSource="{Binding EncoderQualityValues}"
                                      SelectedItem="{Binding Quality}"
                                      Visibility="{Binding IsQualityVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />

                            <ComboBox Grid.Column="5" Width="55" Height="22" Margin="5,0,5,0" ItemsSource="{Binding Bitrates}"
                                      SelectedItem="{Binding Bitrate}"
                                      Visibility="{Binding IsBitrateVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />

                            <TextBlock Grid.Row="0" Grid.Column="6" VerticalAlignment="Center" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_Mixdown}" />
                            <ComboBox Grid.Row="0" Grid.Column="7" Height="22" Width="120" Margin="5,0,5,0" HorizontalAlignment="Stretch"
                                      ItemsSource="{Binding Mixdowns}" SelectedItem="{Binding MixDown}"
                                      DisplayMemberPath="DisplayName" />


                            <TextBlock VerticalAlignment="Center" Grid.Column="8" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_Samplerate}" />
                            <ComboBox Width="70" Height="22" Margin="5,0,5,0" Grid.Column="9" 
                                      ItemsSource="{Binding DataContext.SampleRates, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
                                      SelectedItem="{Binding SampleRateDisplayValue}" />

                            <TextBlock VerticalAlignment="Center" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_DRC}" Grid.Column="10" />
                            <controls:NumberBox Name="drcNumericCtl" Width="45" Margin="5,0,5,0" HorizontalAlignment="Left" Grid.Column="11" 
                                                Minimum="0" Modulus="0.1" Maximum="4" Number="{Binding DRC, Mode=TwoWay}" UpdateBindingOnTextChange="True" 
                                                ShowIncrementButtons="True" AllowEmpty="False" />

                            <TextBlock  VerticalAlignment="Center" FontWeight="Bold" Text="{x:Static Properties:Resources.AudioView_Gain}" Grid.Column="12"  />
                            <controls:NumberBox Name="gainNumericCtl" Width="45" Margin="5,0,5,0" HorizontalAlignment="Left" Grid.Column="13" 
                                                Minimum="-20" Modulus="1" Maximum="20" Number="{Binding Gain, Mode=TwoWay}" UpdateBindingOnTextChange="True" 
                                                ShowIncrementButtons="True" AllowEmpty="False" />

                        </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="RemoveTrack">
                                            <cal:Parameter Value="{Binding}" />
                                        </cal:ActionMessage>
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
                            </Image>
                        </StackPanel>

                    </Grid>

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

</UserControl>
