<rxui:ReactiveUserControl x:Class="Wabbajack.InstallationView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:common="clr-namespace:Wabbajack.Common;assembly=Wabbajack.Common" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:icon="http://metro.mahapps.com/winfx/xaml/iconpacks" xmlns:lib="clr-namespace:Wabbajack.Lib;assembly=Wabbajack.Lib" 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:rxui="http://reactiveui.net" d:DataContext="{d:DesignInstance local:InstallerVM}" d:DesignHeight="500" d:DesignWidth="800" x:TypeArguments="local:InstallerVM" mc:Ignorable="d"> <UserControl.Resources> <Style x:Key="SlideshowButton" BasedOn="{StaticResource CircleButtonStyle}" TargetType="ButtonBase"> <Setter Property="Width" Value="40" /> <Setter Property="Height" Value="40" /> <Setter Property="Margin" Value="4" /> </Style> </UserControl.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="47" /> <RowDefinition Height="4*" /> <RowDefinition Height="*" MinHeight="175" /> </Grid.RowDefinitions> <Rectangle Grid.Row="1" Grid.RowSpan="2" x:Name="BorderEdgeFadeDown"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Offset="0" Color="#191919" /> <GradientStop Offset="0.4" Color="#00191919" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> <local:HeatedBackgroundView Grid.Row="0" Grid.RowSpan="3" x:Name="HeatedBackground" /> <Grid Grid.Row="1" x:Name="Slideshow" Margin="5,0,5,5"> <Border BorderBrush="{StaticResource BorderInterestBrush}" BorderThickness="1,0,1,1"> <Grid> <local:DetailImageView x:Name="DetailImage" /> <mahapps:ProgressRing x:Name="ModlistLoadingRing" /> </Grid> </Border> <Grid Margin="0,20,25,0" HorizontalAlignment="Right" VerticalAlignment="Top"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.Effect> <DropShadowEffect BlurRadius="25" Opacity="1" Color="Black" /> </Grid.Effect> <Grid.Style> <Style TargetType="Grid"> <Setter Property="Opacity" Value="0" /> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding IsMouseOver, ElementName=Slideshow}" Value="True" /> <Condition Binding="{Binding Installing}" Value="True" /> </MultiDataTrigger.Conditions> <MultiDataTrigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.12" /> </Storyboard> </BeginStoryboard> </MultiDataTrigger.EnterActions> <MultiDataTrigger.ExitActions> <BeginStoryboard> <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"> <LinearDoubleKeyFrame KeyTime="0:0:0.3" Value="1" /> <LinearDoubleKeyFrame KeyTime="0:0:0.42" Value="0" /> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </MultiDataTrigger.ExitActions> </MultiDataTrigger> </Style.Triggers> </Style> </Grid.Style> <Button Grid.Column="3" x:Name="SkipSlideButton" Width="60" Height="60" Margin="6" Background="{StaticResource BackgroundBrush}" Style="{StaticResource CircleButtonStyle}" ToolTip="Skip to the next mod"> <icon:PackIconFontAwesome Width="28" Height="28" Kind="ChevronRightSolid" /> </Button> <ToggleButton Grid.Column="2" x:Name="PlayPauseButton" Margin="6" Background="{StaticResource BackgroundBrush}" Style="{StaticResource SlideshowButton}"> <icon:PackIconMaterial> <icon:PackIconMaterial.Style> <Style TargetType="icon:PackIconMaterial"> <Setter Property="Kind" Value="Play" /> <Style.Triggers> <DataTrigger Binding="{Binding Slideshow.Enable}" Value="True"> <Setter Property="Kind" Value="Pause" /> </DataTrigger> </Style.Triggers> </Style> </icon:PackIconMaterial.Style> </icon:PackIconMaterial> </ToggleButton> <Button Grid.Column="1" x:Name="OpenWebsite" Margin="6" Background="{StaticResource BackgroundBrush}" Style="{StaticResource SlideshowButton}" ToolTip="Open mod's website"> <icon:PackIconMaterial Width="28" Height="28" Kind="Web" /> </Button> <ToggleButton Grid.Column="0" x:Name="ShowNSFWButton" Background="{StaticResource BackgroundBrush}" Style="{StaticResource SlideshowButton}"> <Grid> <TextBlock Margin="4" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Lucida Sans" FontSize="9" FontWeight="Bold" Text="NSFW" /> <icon:PackIconOcticons x:Name="NSFWSlashIcon" Width="40" Height="40" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#88FFFFFF" Kind="CircleSlash" /> </Grid> </ToggleButton> </Grid> </Grid> <!-- Comes after slideshow control, so that any effects/overlap goes on top --> <local:TopProgressView Grid.Row="0" Grid.RowSpan="2" x:Name="TopProgressBar"> <!-- Readd when Pause/Stop implementations added --> <!--<Button Grid.Column="2" ToolTip="Pause Installation" Margin="0,0,0,5" Width="50" Visibility="{Binding StartedInstallation, Converter={StaticResource bool2VisibilityConverter}}"> <icon:PackIconMaterial Kind="Pause" /> </Button> <Button Grid.Column="3" ToolTip="Stop Installation" Margin="0,0,0,5" Width="50" Visibility="{Binding StartedInstallation, Converter={StaticResource bool2VisibilityConverter}}" > <icon:PackIconFontAwesome Width="25" Height="25" Kind="TimesCircleSolid" /> </Button>--> </local:TopProgressView> <Button Grid.Row="0" Grid.RowSpan="2" x:Name="BackButton" Width="30" Height="30" Margin="7,5,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Style="{StaticResource IconCircleButtonStyle}" ToolTip="Back to main menu"> <icon:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" /> </Button> <!-- Bottom Area --> <Grid Grid.Row="2" x:Name="BottomButtonInputGrid" Margin="5,0,5,5" ClipToBounds="True"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="2*" /> </Grid.ColumnDefinitions> <Grid Grid.Column="0" Margin="0"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Button Grid.Row="0" x:Name="OpenReadmePreInstallButton" Margin="30,5" FontSize="20" Style="{StaticResource LargeButtonStyle}" ToolTip="Open the readme for the modlist"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30" /> <ColumnDefinition Width="82" /> </Grid.ColumnDefinitions> <icon:PackIconFontAwesome Grid.Column="0" Width="30" Height="30" VerticalAlignment="Center" Kind="ReadmeBrands" /> <TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center" Text="Readme" /> </Grid> </Button> <Button Grid.Row="1" x:Name="VisitWebsitePreInstallButton" Margin="30,5" FontSize="20" Style="{StaticResource LargeButtonStyle}" ToolTip="Open the webpage for the modlist"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30" /> <ColumnDefinition Width="82" /> </Grid.ColumnDefinitions> <icon:PackIconMaterial Grid.Column="0" Width="30" Height="30" VerticalAlignment="Center" Kind="Web" /> <TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center" Text="Website" /> </Grid> </Button> <Button Grid.Row="2" x:Name="ShowManifestPreInstallButton" Margin="30,5" FontSize="20" Style="{StaticResource LargeButtonStyle}" ToolTip="Open an explicit listing of all actions this modlist will take"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30" /> <ColumnDefinition Width="82" /> </Grid.ColumnDefinitions> <icon:PackIconOcticons Grid.Column="0" Width="30" Height="30" VerticalAlignment="Center" Kind="Checklist" /> <TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center" Text="Manifest" /> </Grid> </Button> <Button Grid.Row="4" x:Name="OpenDiscordButton" Margin="30,5" FontSize="20" Style="{StaticResource LargeButtonStyle}" ToolTip="Open a link to the official discord for this modlist"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30" /> <ColumnDefinition Width="82" /> </Grid.ColumnDefinitions> <icon:PackIconMaterial Grid.Column="0" Width="30" Height="30" VerticalAlignment="Center" Kind="Discord" /> <TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center" Text="Discord" /> </Grid> </Button> </Grid> <local:InstallationConfigurationView Grid.Column="2" x:Name="InstallationConfigurationView" ViewModel="{Binding}" /> </Grid> <Grid Grid.Row="2" x:Name="MidInstallDisplayGrid" Margin="5,0,5,5"> <Grid.ColumnDefinitions> <ColumnDefinition Width="4*" /> <ColumnDefinition Width="5" /> <ColumnDefinition Width="3*" /> </Grid.ColumnDefinitions> <local:LogView x:Name="LogView" Grid.Column="0" /> <local:CpuView Grid.Column="2" x:Name="CpuView" ViewModel="{Binding}" /> <local:AttentionBorder Grid.Column="2" x:Name="UserInterventionsControl" Content="{Binding ActiveGlobalUserIntervention}"> <local:AttentionBorder.Resources> <DataTemplate DataType="{x:Type lib:ConfirmationIntervention}"> <local:ConfirmationInterventionView ViewModel="{Binding}" /> </DataTemplate> <DataTemplate DataType="{x:Type local:ConfirmUpdateOfExistingInstallVM}"> <local:ConfirmUpdateOfExistingInstallView ViewModel="{Binding}" /> </DataTemplate> </local:AttentionBorder.Resources> </local:AttentionBorder> <local:InstallationCompleteView Grid.Column="2" x:Name="InstallComplete" ViewModel="{Binding}" /> </Grid> </Grid> </rxui:ReactiveUserControl>