<UserControl
    x:Class="Wabbajack.ModListGalleryView"
    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:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
    xmlns:local="clr-namespace:Wabbajack"
    xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
    d:DesignHeight="450"
    d:DesignWidth="800"
    mc:Ignorable="d">
    <UserControl.Resources>
        <Color x:Key="TextBackgroundFill">#92000000</Color>
        <SolidColorBrush x:Key="TextBackgroundFillBrush" Color="{StaticResource TextBackgroundFill}" />
        <Color x:Key="TextBackgroundHoverFill">#DF000000</Color>
        <Style x:Key="BackgroundBlurStyle" TargetType="TextBlock">
            <Setter Property="Background" Value="{StaticResource TextBackgroundFillBrush}" />
            <Setter Property="Foreground" Value="Transparent" />
            <Setter Property="Visibility" Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation
                                    Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)"
                                    To="{StaticResource TextBackgroundHoverFill}"
                                    Duration="0:0:0.06" />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                    <DataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation
                                    Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)"
                                    To="{StaticResource TextBackgroundFill}"
                                    Duration="0:0:0.06" />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.ExitActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="47" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Rectangle
            Grid.Row="1"
            Grid.RowSpan="3"
            Margin="6,0">
            <Rectangle.Fill>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Offset="0" Color="#123700B3" />
                    <GradientStop Offset="1" Color="#00000000" />
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <Border
            Grid.Row="1"
            BorderBrush="Transparent"
            BorderThickness="1,0,1,1">
            <ScrollViewer Background="Transparent" VerticalScrollBarVisibility="Auto">
                <ItemsControl
                    Margin="0,10,0,0"
                    HorizontalAlignment="Center"
                    ItemsSource="{Binding ModLists}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Border
                                x:Name="ModListTile"
                                Margin="10"
                                Background="Transparent"
                                BorderThickness="1">
                                <Border.Effect>
                                    <DropShadowEffect
                                        BlurRadius="25"
                                        Opacity="0.5"
                                        ShadowDepth="5" />
                                </Border.Effect>
                                <Border.Style>
                                    <Style TargetType="Border">
                                        <Setter Property="BorderBrush" Value="{StaticResource ButtonBorder}" />
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsMouseOver, ElementName=ModListTile}" Value="True">
                                                <Setter Property="BorderBrush" Value="{StaticResource BorderInterestBrush}" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Border.Style>
                                <Grid
                                    Width="570"
                                    Height="440"
                                    Background="{StaticResource DarkBackgroundBrush}">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="*" />
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Border
                                        Grid.Row="0"
                                        Grid.Column="0"
                                        Grid.ColumnSpan="2"
                                        BorderBrush="{StaticResource ButtonNormalBorder}"
                                        BorderThickness="0,0,0,1">
                                        <Grid ClipToBounds="True">
                                            <Viewbox
                                                Height="340"
                                                HorizontalAlignment="Center"
                                                VerticalAlignment="Center"
                                                Stretch="UniformToFill">
                                                <Image Source="{Binding Metadata.Links.ImageUri}" />
                                            </Viewbox>
                                            <Ellipse
                                                Height="120"
                                                Margin="-40,0,-40,-60"
                                                VerticalAlignment="Bottom"
                                                Fill="Black"
                                                Opacity="0.5">
                                                <Ellipse.Effect>
                                                    <BlurEffect Radius="55" />
                                                </Ellipse.Effect>
                                                <Ellipse.Style>
                                                    <Style TargetType="Ellipse">
                                                        <Style.Triggers>
                                                            <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
                                                                <DataTrigger.EnterActions>
                                                                    <BeginStoryboard>
                                                                        <Storyboard>
                                                                            <DoubleAnimation
                                                                                Storyboard.TargetProperty="Opacity"
                                                                                To="0.75"
                                                                                Duration="0:0:0.08" />
                                                                        </Storyboard>
                                                                    </BeginStoryboard>
                                                                </DataTrigger.EnterActions>
                                                                <DataTrigger.ExitActions>
                                                                    <BeginStoryboard>
                                                                        <Storyboard>
                                                                            <DoubleAnimation
                                                                                Storyboard.TargetProperty="Opacity"
                                                                                To="0.5"
                                                                                Duration="0:0:0.08" />
                                                                        </Storyboard>
                                                                    </BeginStoryboard>
                                                                </DataTrigger.ExitActions>
                                                            </DataTrigger>
                                                        </Style.Triggers>
                                                    </Style>
                                                </Ellipse.Style>
                                            </Ellipse>
                                        </Grid>
                                    </Border>
                                    <TextBlock
                                        x:Name="DescriptionTextShadow"
                                        Grid.Row="0"
                                        Grid.Column="0"
                                        Grid.ColumnSpan="2"
                                        Margin="5"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Bottom"
                                        FontFamily="Lucida Sans"
                                        FontSize="30"
                                        FontWeight="Bold"
                                        Style="{StaticResource BackgroundBlurStyle}"
                                        Text="{Binding Metadata.Title}"
                                        TextWrapping="Wrap">
                                        <TextBlock.Effect>
                                            <BlurEffect Radius="25" />
                                        </TextBlock.Effect>
                                    </TextBlock>
                                    <TextBlock
                                        Grid.Row="0"
                                        Grid.Column="0"
                                        Grid.ColumnSpan="2"
                                        Margin="5"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Bottom"
                                        FontFamily="Lucida Sans"
                                        FontSize="30"
                                        FontWeight="Bold"
                                        Text="{Binding Metadata.Title}"
                                        TextWrapping="Wrap">
                                        <TextBlock.Effect>
                                            <DropShadowEffect />
                                        </TextBlock.Effect>
                                    </TextBlock>
                                    <mahapps:MetroProgressBar
                                        Grid.Row="0"
                                        Grid.Column="0"
                                        Grid.ColumnSpan="2"
                                        Height="3"
                                        VerticalAlignment="Bottom"
                                        Background="{StaticResource BackgroundBrush}"
                                        Foreground="{StaticResource SecondaryBrush}"
                                        Maximum="1"
                                        Visibility="{Binding IsEnabled, ElementName=ExecuteButton, Converter={StaticResource bool2VisibilityHiddenConverter}, ConverterParameter=False}"
                                        Value="{Binding ProgressPercent, Mode=OneWay}" />
                                    <TextBlock
                                        Grid.Row="1"
                                        Grid.Column="0"
                                        Margin="8,5"
                                        VerticalAlignment="Center"
                                        FontSize="14"
                                        Text="{Binding Metadata.Description}"
                                        TextWrapping="Wrap" />
                                    <Grid Grid.Row="1" Grid.Column="1">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>
                                        <Grid.Resources>
                                            <Style
                                                x:Key="ModlistButtonStyle"
                                                BasedOn="{StaticResource IconCircleButtonStyle}"
                                                TargetType="Button">
                                                <Style.Triggers>
                                                    <MultiDataTrigger>
                                                        <MultiDataTrigger.Conditions>
                                                            <Condition Binding="{Binding IsMouseOver, ElementName=ModListTile}" Value="True" />
                                                            <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" />
                                                        </MultiDataTrigger.Conditions>
                                                        <MultiDataTrigger.Setters>
                                                            <Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
                                                        </MultiDataTrigger.Setters>
                                                    </MultiDataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Grid.Resources>
                                        <Button
                                            Grid.Row="0"
                                            Width="40"
                                            Height="40"
                                            Margin="5,0"
                                            VerticalAlignment="Bottom"
                                            Command="{Binding OpenWebsiteCommand}"
                                            Style="{StaticResource ModlistButtonStyle}">
                                            <iconPacks:Material
                                                Width="20"
                                                Height="20"
                                                Kind="Web" />
                                        </Button>
                                        <Button
                                            x:Name="ExecuteButton"
                                            Grid.Row="1"
                                            Width="40"
                                            Height="40"
                                            Margin="5,0"
                                            VerticalAlignment="Top"
                                            Command="{Binding ExecuteCommand}">
                                            <Button.Style>
                                                <Style BasedOn="{StaticResource ModlistButtonStyle}" TargetType="Button">
                                                    <Setter Property="Content">
                                                        <Setter.Value>
                                                            <iconPacks:Material
                                                                Width="20"
                                                                Height="20"
                                                                Kind="Download" />
                                                        </Setter.Value>
                                                    </Setter>
                                                    <Setter Property="ToolTip" Value="Download modlist" />
                                                    <Style.Triggers>
                                                        <MultiDataTrigger>
                                                            <MultiDataTrigger.Conditions>
                                                                <Condition Binding="{Binding Exists}" Value="True" />
                                                                <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" />
                                                            </MultiDataTrigger.Conditions>
                                                            <MultiDataTrigger.Setters>
                                                                <Setter Property="Content">
                                                                    <Setter.Value>
                                                                        <iconPacks:Material
                                                                            Width="20"
                                                                            Height="20"
                                                                            Kind="Play" />
                                                                    </Setter.Value>
                                                                </Setter>
                                                                <Setter Property="ToolTip" Value="Install modlist" />
                                                                <Setter Property="Padding" Value="3,0,0,0" />
                                                            </MultiDataTrigger.Setters>
                                                        </MultiDataTrigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Button.Style>
                                        </Button>
                                    </Grid>
                                </Grid>
                            </Border>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </ScrollViewer>
        </Border>
        <local:TopProgressView
            Title="Browsing Modlists"
            Grid.Row="0"
            Grid.RowSpan="2"
            ShadowMargin="False" />
        <Button
            x:Name="BackButton"
            Grid.Row="0"
            Width="30"
            Height="30"
            Margin="7,5,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Command="{Binding BackCommand}"
            Style="{StaticResource IconCircleButtonStyle}"
            ToolTip="Back to main menu">
            <iconPacks:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" />
        </Button>
    </Grid>
</UserControl>