Files
WowUp/WowUp.WPF/Views/AddonsView.xaml
jliddev 3ce8a4d7b5 Bind client type dropdowns to the same value
Cache curse featured addons.
2020-08-18 14:59:05 -05:00

310 lines
18 KiB
XML

<UserControl x:Class="WowUp.WPF.Views.AddonsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:gif="http://wpfanimatedgif.codeplex.com"
xmlns:t="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:WowUp.WPF.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
>
<UserControl.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="HyperlinkStyle" TargetType="Hyperlink">
<Setter Property="Foreground" Value="White" />
<Setter Property="TextDecorations" Value="None" />
</Style>
<DataTemplate x:Key="AddonColumnTemplate" >
<Border Padding="10">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0, 0, 10, 0" VerticalAlignment="Center"
Background="#222">
<Border Background="{StaticResource Dark2}" >
<Image Source="{Binding ThumbnailUrl}" Width="40" Height="40"
RenderOptions.BitmapScalingMode="HighQuality"/>
</Border>
<TextBlock Visibility="{Binding ShowChannelName, Converter={StaticResource BoolToVisibilty}}"
Text="{Binding ChannelName}"
HorizontalAlignment="Center"
Foreground="{Binding ChannelNameBrush}"
FontWeight="ExtraBold"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Visibility="{Binding ExternalUrl, Converter={StaticResource StringToVisibilty}}"
Style="{StaticResource labelAddonName}" >
<Hyperlink x:Name="AddonLink"
Style="{StaticResource HyperlinkStyle}"
NavigateUri="{Binding ExternalUrl}"
Command="{Binding OpenLinkCommand}">
<TextBlock Text="{Binding Name}" TextWrapping="Wrap"/>
</Hyperlink>
</TextBlock>
<TextBlock Visibility="{Binding ExternalUrl, Converter={StaticResource InverseStringToVisibilty}}"
Text="{Binding Name}"
Style="{StaticResource labelAddonName}"
TextWrapping="Wrap"/>
<TextBlock Text="{Binding CurrentVersion}"
Style="{StaticResource labelAddonText}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<DataTemplate x:Key="LatestVersionTemplate" >
<Border Padding="10">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock Text="{Binding LatestVersion}"
TextWrapping="Wrap"
Style="{StaticResource labelAddonText}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<DataTemplate x:Key="GameVersionTemplate" >
<Border Padding="10">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock Text="{Binding GameVersion}"
TextWrapping="Wrap"
Style="{StaticResource labelAddonText}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<DataTemplate x:Key="AuthorTemplate" >
<Border Padding="10">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock Text="{Binding Author}"
TextWrapping="Wrap"
Style="{StaticResource labelAddonText}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<DataTemplate x:Key="StatusColumnTemplate" >
<Border Padding="10">
<StackPanel VerticalAlignment="Center">
<Button Visibility="{Binding ShowInstallButton, Converter={StaticResource BoolToVisibilty}}"
Style="{StaticResource purpleButton}"
HorizontalAlignment="Center"
Command="{Binding InstallCommand}">Install</Button>
<Button Visibility="{Binding ShowUpdateButton, Converter={StaticResource BoolToVisibilty}}"
Style="{StaticResource purpleButton}"
HorizontalAlignment="Center"
Command="{Binding UpdateCommand}">Update</Button>
<TextBlock Text="{Binding StatusText}"
Style="{StaticResource labelAddonText}"
HorizontalAlignment="Center"
Visibility="{Binding ShowStatusText, Converter={StaticResource BoolToVisibilty}}" />
<StackPanel Visibility="{Binding ShowProgressBar, Converter={StaticResource BoolToVisibilty}}">
<TextBlock Text="{Binding ProgressText}"
Style="{StaticResource labelAddonText}"
HorizontalAlignment ="Center"/>
<ProgressBar Minimum="0" Maximum="100" Value="{Binding ProgressPercent}" />
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
<Grid Background="{StaticResource Dark3}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid x:Name="ControlBar" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Padding="10">
<StackPanel Orientation="Horizontal">
<TextBlock Text="World of Warcraft" FontSize="14" Foreground="White" VerticalAlignment="Center" Margin="0, 0, 10,0"/>
<ComboBox x:Name="WowClientComboBox"
SelectedItem="{Binding SelectedClientType}"
Style="{StaticResource ComboBoxFlatStyle}"
IsEnabled="{Binding IsBusy, Converter={StaticResource InverseBool}}"
ItemsSource="{Binding ClientTypeNames}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectedWowClientCommand}"
CommandParameter="{Binding ElementName=WowClientComboBox, Path=SelectedValue}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</StackPanel>
</Border>
<Border Grid.Column="1" Padding="10">
<StackPanel Orientation="Horizontal">
<!--<Button x:Name="InstallButton" Margin="0, 0, 10, 0" Command="{Binding InstallCommand}"
Style="{StaticResource purpleButton}">Install</Button>-->
<Button x:Name="UpdateAllButton" Margin="0, 0, 10, 0" Click="UpdateAllButton_Click"
IsEnabled="{Binding EnableUpdateAll}"
Style="{StaticResource purpleButton}">Update All</Button>
<Button x:Name="RefreshButton" Margin="0, 0, 10, 0" Click="RefreshButton_Click"
IsEnabled="{Binding EnableRefresh}"
Style="{StaticResource purpleButton}">Refresh</Button>
<Button x:Name="RescanButton" Click="RescanButton_Click"
IsEnabled="{Binding EnableRescan}"
Style="{StaticResource purpleButton}">Re-Scan</Button>
</StackPanel>
</Border>
</Grid>
<Grid x:Name="AddonTable" Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="2" Visibility="{Binding IsBusy, Converter={StaticResource BoolToVisibilty}}" VerticalAlignment="Center">
<TextBlock Text="Loading Addons..." HorizontalAlignment="Center" FontSize="14" Foreground="White" />
<Image gif:ImageBehavior.AnimatedSource="../Assets/activity.gif" Height="40"
RenderOptions.BitmapScalingMode="HighQuality"/>
</StackPanel>
<StackPanel Grid.Row="1" Visibility="{Binding ShowEmptyLabel, Converter={StaticResource BoolToVisibilty}}" >
<TextBlock Text="No Addons found" HorizontalAlignment="Center" FontSize="16" Foreground="White"/>
</StackPanel>
<DataGrid Grid.Row="2" Padding="0" Margin="0"
Visibility="{Binding ShowResults, Converter={StaticResource BoolToVisibilty}}"
ItemsSource="{Binding DisplayAddons}"
Background="{StaticResource Dark2}"
AutoGenerateColumns="False"
GridLinesVisibility="Horizontal"
CanUserReorderColumns="False"
IsReadOnly="True"
HorizontalGridLinesBrush="{StaticResource Dark2}"
RowHeaderWidth="0"
BorderThickness="0"
VirtualizingPanel.ScrollUnit="Pixel"
BorderBrush="Transparent">
<DataGrid.Resources>
<ContextMenu x:Key="RowMenu"
Style="{StaticResource DarkMenu}"
DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Style="{StaticResource DarkHeaderMenuItem}" Header="{Binding Name}" IsEnabled="False" />
<MenuItem Header="Ignore" IsCheckable="True"
IsChecked="{Binding IsIgnored}"
Command="{Binding IgnoreCheckedCommand}"
CommandParameter="{Binding}">
</MenuItem>
<MenuItem Header="Auto Update" IsCheckable="True"
IsChecked="{Binding IsAutoUpdated}"
Command="{Binding AutoUpdateCheckedCommand}"
CommandParameter="{Binding}">
</MenuItem>
<MenuItem Header="Channel">
<MenuItem Header="Stable"
IsCheckable="True" IsChecked="{Binding IsStableChannel}"
IsEnabled="{Binding CanCheckStable}"
Command="{Binding StableCheckedCommand, Mode=TwoWay, UpdateSourceTrigger=Explicit}"></MenuItem>
<MenuItem Header="Beta"
IsCheckable="True" IsChecked="{Binding IsBetaChannel}"
IsEnabled="{Binding CanCheckBeta}"
Command="{Binding BetaCheckedCommand}"></MenuItem>
<MenuItem Header="Alpha"
IsCheckable="True" IsChecked="{Binding IsAlphaChannel}"
IsEnabled="{Binding CanCheckAlpha}"
Command="{Binding AlphaCheckedCommand}"></MenuItem>
</MenuItem>
<Separator Visibility="{Binding ShowUpdateButton, Converter={StaticResource BoolToVisibilty}}" />
<MenuItem Header="Update"
Visibility="{Binding ShowUpdateButton, Converter={StaticResource BoolToVisibilty}}"
Command="{Binding InstallCommand}"/>
<MenuItem Header="Re-Install"
Visibility="{Binding ShowReInstall, Converter={StaticResource BoolToVisibilty}}"
Command="{Binding ReInstallCommand}"/>
<Separator Visibility="{Binding ShowUninstall, Converter={StaticResource BoolToVisibilty}}" />
<MenuItem Header="Remove"
Command="{Binding UninstallCommand}"
Visibility="{Binding ShowUninstall, Converter={StaticResource BoolToVisibilty}}" />
</ContextMenu>
<Style TargetType="{x:Type DataGrid}">
<Setter Property="Background" Value="{StaticResource Dark3}"/>
</Style>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="{StaticResource Dark3}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource Dark1}" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Background" Value="{StaticResource Dark3}"/>
</Style>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="{StaticResource Dark2}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Border Padding="5">
<TextBlock Text="{Binding}" TextWrapping="Wrap" Style="{StaticResource labelTableHeader}"/>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
<Setter Property="Background" Value="{StaticResource Dark3}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource Dark1}" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Addon" CellTemplate="{StaticResource AddonColumnTemplate}" Width="*" />
<DataGridTemplateColumn Header="Status" CellTemplate="{StaticResource StatusColumnTemplate}" Width="120" CanUserResize="False"/>
<DataGridTemplateColumn Header="Latest Version" CellTemplate="{StaticResource LatestVersionTemplate}" Width="120" MinWidth="80"/>
<DataGridTemplateColumn Header="Game Version" CellTemplate="{StaticResource GameVersionTemplate}" Width="120" CanUserResize="False"/>
<DataGridTemplateColumn Header="Author" CellTemplate="{StaticResource AuthorTemplate}" Width="150" MinWidth="80" CanUserResize="False" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</UserControl>