wabbajack/Wabbajack.App.Wpf/Views/Installers/InstallationView.xaml
2022-05-16 21:27:23 -06:00

347 lines
16 KiB
XML

<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;assembly=Wabbajack"
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"
xmlns:lib1="clr-namespace:Wabbajack"
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="OpenDiscordPreInstallButton"
Margin="30,2"
FontSize="20"
Style="{StaticResource LargeButtonStyle}"
ToolTip="Open the Discord for this Modlist">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30" />
<ColumnDefinition Width="82" />
</Grid.ColumnDefinitions>
<icon:PackIconFontAwesome Grid.Column="0"
Width="30"
Height="30"
VerticalAlignment="Center"
Kind="DiscordBrands" />
<TextBlock Grid.Column="1"
Margin="10,0,0,0"
VerticalAlignment="Center"
Text="Discord" />
</Grid>
</Button>
<Button Grid.Row="1"
x:Name="OpenReadmePreInstallButton"
Margin="30,2"
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="2"
x:Name="VisitWebsitePreInstallButton"
Margin="30,2"
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="3"
x:Name="ShowManifestPreInstallButton"
Margin="30,2"
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>
</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 lib1: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>