343 lines
22 KiB
XML
343 lines
22 KiB
XML
<DockPanel
|
|
x:Class="JD.Guinness.WPF.Module.View.ChallengeView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:editors="http://schemas.actiprosoftware.com/winfx/xaml/editors"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:dataGrid="clr-namespace:ActiproSoftware.Windows.Controls.DataGrid;assembly=DataGrid.Contrib"
|
|
xmlns:behavior="clr-namespace:JD.Guinness.WPF.Module.Behavior"
|
|
xmlns:control="clr-namespace:JD.Guinness.WPF.Module.Control"
|
|
xmlns:ps4="clr-namespace:JD.Guinness.WPF.Module.Model.Ps4"
|
|
xmlns:ps5="clr-namespace:JD.Guinness.WPF.Module.Model.Ps5"
|
|
xmlns:stadia="clr-namespace:JD.Guinness.WPF.Module.Model.Stadia"
|
|
xmlns:xBoxOne="clr-namespace:JD.Guinness.WPF.Module.Model.XBoxOne"
|
|
xmlns:xBoxSeriesX="clr-namespace:JD.Guinness.WPF.Module.Model.XBoxSeriesX"
|
|
Name="This"
|
|
Margin="5">
|
|
<DockPanel.Resources>
|
|
<ResourceDictionary>
|
|
<ResourceDictionary.MergedDictionaries>
|
|
<ResourceDictionary Source="../Resource/Icons.xaml"/>
|
|
<ResourceDictionary Source="../Resource/Converters.xaml"/>
|
|
</ResourceDictionary.MergedDictionaries>
|
|
|
|
<control:DataGridHeaderTemplateSelector x:Key="DataGridHeaderTemplateSelector" />
|
|
|
|
<Style TargetType="ToggleButton">
|
|
<Setter Property="OverridesDefaultStyle" Value="True"/>
|
|
<Setter Property="HorizontalAlignment" Value="Center"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Opacity" Value=".25"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Grid Background="Transparent">
|
|
<ContentPresenter Content="{TemplateBinding Content}" />
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter Property="Opacity" Value="1"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Opacity" Value="0.5"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ResourceDictionary>
|
|
</DockPanel.Resources>
|
|
<DockPanel DockPanel.Dock="Bottom" Margin="0,5,0,0">
|
|
<Button DockPanel.Dock="Right" Command="{Binding GenerateCommand}" Height="40" Margin="5,0,0,0" Padding="5">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="Generate " VerticalAlignment="Center"/>
|
|
<ContentPresenter ContentTemplate="{StaticResource GenerateIcon}"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<UniformGrid Rows="1" VerticalAlignment="Center" IsEnabled="{Binding Game.IsAvailable}" Height="30">
|
|
<ToggleButton ToolTip="PS4" IsChecked="{Binding Game.Ps4Configuration.Generate}">
|
|
<ContentPresenter ContentTemplate="{StaticResource PS4Icon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton ToolTip="PS5" IsChecked="{Binding Game.Ps5Configuration.Generate}">
|
|
<ContentPresenter ContentTemplate="{StaticResource PS5Icon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton ToolTip="XBOX ONE" IsChecked="{Binding Game.XBoxOneConfiguration.Generate}">
|
|
<ContentPresenter ContentTemplate="{StaticResource XBOXONEIcon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton ToolTip="XBOX SERIES X" IsChecked="{Binding Game.XBoxSeriesXConfiguration.Generate}">
|
|
<ContentPresenter ContentTemplate="{StaticResource XBOXSERIESXIcon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton ToolTip="Stadia" IsChecked="{Binding Game.StadiaConfiguration.Generate}">
|
|
<ContentPresenter ContentTemplate="{StaticResource StadiaIcon}"/>
|
|
</ToggleButton>
|
|
</UniformGrid>
|
|
</DockPanel>
|
|
<Grid DockPanel.Dock="Top" Margin="0,0,0,5">
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
|
|
<StackPanel.Resources>
|
|
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Width" Value="30"/>
|
|
<Setter Property="Height" Value="30"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
</Style>
|
|
</StackPanel.Resources>
|
|
<Button ToolTip="Add challenge" Command="{Binding AddChallengeCommand}">
|
|
<ContentPresenter ContentTemplate="{StaticResource AddIcon}"/>
|
|
</Button>
|
|
<Button ToolTip="Remove challenge" Command="{Binding RemoveChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}" Margin="5,0,0,0">
|
|
<ContentPresenter ContentTemplate="{StaticResource RemoveIcon}"/>
|
|
</Button>
|
|
<Button ToolTip="Duplicate challenge" Command="{Binding DuplicateChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}" Margin="5,0,0,0">
|
|
<ContentPresenter ContentTemplate="{StaticResource DuplicateIcon}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
<TextBlock Text="{Binding Game.Challenges.Count, StringFormat={}{0} challenges}" VerticalAlignment="Center" HorizontalAlignment="Right" FontSize="15"/>
|
|
</Grid>
|
|
<dataGrid:ThemedDataGrid
|
|
Name="DataGrid"
|
|
ItemsSource="{Binding Game.Challenges}"
|
|
behavior:DataGridBehavior.ShowCustomColumns="True"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="{Binding Game.IsAvailable, Converter={StaticResource InverseBooleanConverter}}"
|
|
SelectionMode="Extended"
|
|
GridLinesVisibility="None"
|
|
HeadersVisibility="Column"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
CanUserResizeRows="False"
|
|
CanUserSortColumns="True"
|
|
CanUserReorderColumns="True"
|
|
ColumnWidth="Auto">
|
|
<dataGrid:ThemedDataGrid.Resources>
|
|
<Style TargetType="editors:AutoCompleteBox" BasedOn="{StaticResource {x:Type editors:AutoCompleteBox}}">
|
|
<Setter Property="ItemsSource" Value="{Binding DataContext.Game.OasisLines, ElementName=This}"/>
|
|
<Setter Property="PlaceholderText" Value="Select an oasis line"/>
|
|
<Setter Property="DataFilter">
|
|
<Setter.Value>
|
|
<editors:AutoCompleteBoxStringFilter />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="behavior:AutoCompleteBoxBehavior.ShowAllOnOpen" Value="True" />
|
|
</Style>
|
|
</dataGrid:ThemedDataGrid.Resources>
|
|
<dataGrid:ThemedDataGrid.InputBindings>
|
|
<KeyBinding Key="Insert" Command="{Binding AddChallengeCommand}"/>
|
|
<KeyBinding Key="Delete" Command="{Binding RemoveChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}"/>
|
|
<KeyBinding
|
|
Key="F2"
|
|
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=DataGrid, Converter={StaticResource ChallengeToPlatformChallengeConverter}, ConverterParameter={x:Type ps4:Ps4Trophy}}"/>
|
|
<KeyBinding
|
|
Key="F3"
|
|
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=DataGrid, Converter={StaticResource ChallengeToPlatformChallengeConverter}, ConverterParameter={x:Type ps5:Ps5Trophy}}"/>
|
|
<KeyBinding
|
|
Key="F4"
|
|
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=DataGrid, Converter={StaticResource ChallengeToPlatformChallengeConverter}, ConverterParameter={x:Type xBoxOne:XBoxOneAchievement}}"/>
|
|
<KeyBinding
|
|
Key="F5"
|
|
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=DataGrid, Converter={StaticResource ChallengeToPlatformChallengeConverter}, ConverterParameter={x:Type xBoxSeriesX:XBoxSeriesXAchievement}}"/>
|
|
<KeyBinding
|
|
Key="F6"
|
|
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
|
|
CommandParameter="{Binding SelectedItem, ElementName=DataGrid, Converter={StaticResource ChallengeToPlatformChallengeConverter}, ConverterParameter={x:Type stadia:StadiaAchievement}}"/>
|
|
</dataGrid:ThemedDataGrid.InputBindings>
|
|
<dataGrid:ThemedDataGrid.ContextMenu>
|
|
<ContextMenu>
|
|
<MenuItem
|
|
Header="Add new column"
|
|
Command="{Binding Source={x:Static behavior:DataGridBehavior.AddColumnCommand}}"
|
|
CommandParameter="{Binding PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
|
|
<MenuItem.Icon>
|
|
<ContentPresenter ContentTemplate="{StaticResource AddColumnIcon}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem
|
|
Header="Shown columns"
|
|
ItemsSource="{Binding PlacementTarget.Columns, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
ItemTemplateSelector="{StaticResource DataGridHeaderTemplateSelector}">
|
|
<MenuItem.Icon>
|
|
<ContentPresenter ContentTemplate="{StaticResource ColumnsIcon}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<Separator/>
|
|
<MenuItem Header="Go to platform challenge" ItemsSource="{Binding PlacementTarget.SelectedItem.PlatformChallenges, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
|
|
<MenuItem.ItemContainerStyle>
|
|
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
|
|
<Setter Property="Command" Value="{Binding PlacementTarget.DataContext.Game.ItemFocuser.GoToItemCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
|
|
<Setter Property="CommandParameter" Value="{Binding}"/>
|
|
<Setter Property="Header" Value="PS4"/>
|
|
<Setter Property="InputGestureText" Value="F2"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Converter={StaticResource IsOfTypeConverter}, ConverterParameter={x:Type ps5:Ps5Trophy}}" Value="True">
|
|
<Setter Property="Header" Value="PS5"/>
|
|
<Setter Property="InputGestureText" Value="F3"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Converter={StaticResource IsOfTypeConverter}, ConverterParameter={x:Type xBoxOne:XBoxOneAchievement}}" Value="True">
|
|
<Setter Property="Header" Value="XBOX ONE"/>
|
|
<Setter Property="InputGestureText" Value="F4"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Converter={StaticResource IsOfTypeConverter}, ConverterParameter={x:Type xBoxSeriesX:XBoxSeriesXAchievement}}" Value="True">
|
|
<Setter Property="Header" Value="XBOX SERIES X"/>
|
|
<Setter Property="InputGestureText" Value="F5"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Converter={StaticResource IsOfTypeConverter}, ConverterParameter={x:Type stadia:StadiaAchievement}}" Value="True">
|
|
<Setter Property="Header" Value="Stadia"/>
|
|
<Setter Property="InputGestureText" Value="F6"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</MenuItem.ItemContainerStyle>
|
|
</MenuItem>
|
|
<Separator/>
|
|
<MenuItem
|
|
Header="Add challenge"
|
|
Command="{Binding AddChallengeCommand}"
|
|
InputGestureText="Insert">
|
|
<MenuItem.Icon>
|
|
<ContentPresenter ContentTemplate="{StaticResource AddIcon}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem
|
|
Header="Remove challenge"
|
|
Command="{Binding RemoveChallengeCommand}"
|
|
CommandParameter="{Binding PlacementTarget.SelectedItems, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
InputGestureText="Delete">
|
|
<MenuItem.Icon>
|
|
<ContentPresenter ContentTemplate="{StaticResource RemoveIcon}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem
|
|
Header="Duplicate challenge"
|
|
Command="{Binding DuplicateChallengeCommand}"
|
|
CommandParameter="{Binding PlacementTarget.SelectedItems, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
|
|
<MenuItem.Icon>
|
|
<ContentPresenter ContentTemplate="{StaticResource DuplicateIcon}"/>
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</dataGrid:ThemedDataGrid.ContextMenu>
|
|
<dataGrid:ThemedDataGrid.Columns>
|
|
<DataGridTemplateColumn Header="Warnings" IsReadOnly="True" SortMemberPath="Warnings">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<ContentControl ToolTip="{Binding Warnings}" Margin="0,0,5,0">
|
|
<ContentControl.Style>
|
|
<Style TargetType="ContentControl">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Warnings}" Value="{x:Null}">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ContentControl.Style>
|
|
<ContentPresenter Height="24" ContentTemplate="{StaticResource WarningIcon}"/>
|
|
</ContentControl>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTemplateColumn Header="Name (Oasis id)" SortMemberPath="Name.Id">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name.Id}"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<DataGridTemplateColumn.CellEditingTemplate>
|
|
<DataTemplate>
|
|
<editors:AutoCompleteBox SelectedItem="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellEditingTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTemplateColumn Header="Name (Oasis path)" SortMemberPath="Name.Path" Visibility="Collapsed">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name.Path}"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<DataGridTemplateColumn.CellEditingTemplate>
|
|
<DataTemplate>
|
|
<editors:AutoCompleteBox SelectedItem="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellEditingTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Name, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}"/>
|
|
<DataGridTemplateColumn Header="Objective (Oasis id)" SortMemberPath="Objective.Id">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Objective.Id}"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<DataGridTemplateColumn.CellEditingTemplate>
|
|
<DataTemplate>
|
|
<editors:AutoCompleteBox SelectedItem="{Binding Objective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellEditingTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTemplateColumn Header="Objective (Oasis path)" SortMemberPath="Objective.Path" Visibility="Collapsed">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Objective.Path}"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<DataGridTemplateColumn.CellEditingTemplate>
|
|
<DataTemplate>
|
|
<editors:AutoCompleteBox SelectedItem="{Binding Objective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellEditingTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn Header="Objective" IsReadOnly="True" Binding="{Binding Objective, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}"/>
|
|
<DataGridTemplateColumn Header="Platforms" CanUserSort="False">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<Grid Background="Transparent" IsHitTestVisible="True">
|
|
<StackPanel Orientation="Horizontal" Height="30">
|
|
<ToggleButton
|
|
Margin="0,0,10,0"
|
|
ToolTip="PS4"
|
|
IsChecked="{Binding PlatformChallenges, Mode=OneWay, Converter={StaticResource ChallengeHasPlatformConverter}, ConverterParameter={x:Type ps4:Ps4Trophy}}"
|
|
Command="{Binding DataContext.TogglePs4TropyCommand, ElementName=This}"
|
|
CommandParameter="{Binding}">
|
|
<ContentPresenter ContentTemplate="{StaticResource PS4Icon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton
|
|
Margin="0,0,10,0"
|
|
ToolTip="PS5"
|
|
IsChecked="{Binding PlatformChallenges, Mode=OneWay, Converter={StaticResource ChallengeHasPlatformConverter}, ConverterParameter={x:Type ps5:Ps5Trophy}}"
|
|
Command="{Binding DataContext.TogglePs5TropyCommand, ElementName=This}"
|
|
CommandParameter="{Binding}">
|
|
<ContentPresenter ContentTemplate="{StaticResource PS5Icon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton
|
|
Margin="0,0,10,0"
|
|
ToolTip="XBOX ONE"
|
|
IsChecked="{Binding PlatformChallenges, Mode=OneWay, Converter={StaticResource ChallengeHasPlatformConverter}, ConverterParameter={x:Type xBoxOne:XBoxOneAchievement}}"
|
|
Command="{Binding DataContext.ToggleXBoxOneAchievementCommand, ElementName=This}"
|
|
CommandParameter="{Binding}">
|
|
<ContentPresenter ContentTemplate="{StaticResource XBOXONEIcon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton
|
|
Margin="0,0,10,0"
|
|
ToolTip="XBOX SERIES X"
|
|
IsChecked="{Binding PlatformChallenges, Mode=OneWay, Converter={StaticResource ChallengeHasPlatformConverter}, ConverterParameter={x:Type xBoxSeriesX:XBoxSeriesXAchievement}}"
|
|
Command="{Binding DataContext.ToggleXBoxSeriesXAchievementCommand, ElementName=This}"
|
|
CommandParameter="{Binding}">
|
|
<ContentPresenter ContentTemplate="{StaticResource XBOXSERIESXIcon}"/>
|
|
</ToggleButton>
|
|
<ToggleButton
|
|
ToolTip="Stadia"
|
|
IsChecked="{Binding PlatformChallenges, Mode=OneWay, Converter={StaticResource ChallengeHasPlatformConverter}, ConverterParameter={x:Type stadia:StadiaAchievement}}"
|
|
Command="{Binding DataContext.ToggleStadiaAchievementCommand, ElementName=This}"
|
|
CommandParameter="{Binding}">
|
|
<ContentPresenter ContentTemplate="{StaticResource StadiaIcon}"/>
|
|
</ToggleButton>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
</dataGrid:ThemedDataGrid.Columns>
|
|
</dataGrid:ThemedDataGrid>
|
|
</DockPanel>
|