1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Workshop library - Match browser design after all

This commit is contained in:
Robert 2023-09-02 10:57:18 +02:00
parent 730881b6d0
commit 318ec99ad4
3 changed files with 78 additions and 22 deletions

View File

@ -3,13 +3,16 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:tabs="clr-namespace:Artemis.UI.Screens.Workshop.Library.Tabs" xmlns:tabs="clr-namespace:Artemis.UI.Screens.Workshop.Library.Tabs"
xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
xmlns:workshop="clr-namespace:Artemis.WebClient.Workshop;assembly=Artemis.WebClient.Workshop" xmlns:workshop="clr-namespace:Artemis.WebClient.Workshop;assembly=Artemis.WebClient.Workshop"
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:asyncImageLoader="clr-namespace:AsyncImageLoader;assembly=AsyncImageLoader.Avalonia"
xmlns:converters="clr-namespace:Artemis.UI.Converters"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="650" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="650"
x:Class="Artemis.UI.Screens.Workshop.Library.Tabs.LibrarySubmissionsView" x:Class="Artemis.UI.Screens.Workshop.Library.Tabs.LibrarySubmissionsView"
x:DataType="tabs:LibrarySubmissionsViewModel"> x:DataType="tabs:LibrarySubmissionsViewModel">
<UserControl.Resources> <UserControl.Resources>
<controls:SymbolIconSource x:Key="GoIcon" Symbol="ChevronRight" /> <converters:EntryIconUriConverter x:Key="EntryIconUriConverter" />
<converters:DateTimeConverter x:Key="DateTimeConverter" />
</UserControl.Resources> </UserControl.Resources>
<UserControl.Styles> <UserControl.Styles>
@ -41,27 +44,75 @@
<Button HorizontalAlignment="Center" Command="{CompiledBinding AddSubmission}">Submit new entry</Button> <Button HorizontalAlignment="Center" Command="{CompiledBinding AddSubmission}">Submit new entry</Button>
</StackPanel> </StackPanel>
<ItemsRepeater IsVisible="{CompiledBinding Entries.Count}" ItemsSource="{CompiledBinding Entries}"> <ScrollViewer>
<ItemsRepeater.ItemTemplate> <ItemsRepeater IsVisible="{CompiledBinding Entries.Count}" ItemsSource="{CompiledBinding Entries}">
<DataTemplate DataType="workshop:IGetSubmittedEntries_SubmittedEntries"> <ItemsRepeater.ItemTemplate>
<controls:SettingsExpander <DataTemplate DataType="workshop:IGetSubmittedEntries_SubmittedEntries">
Header="{CompiledBinding Name}" <Button MinHeight="80"
Description="{CompiledBinding Summary}" MaxHeight="110"
IsClickEnabled="True" Padding="12 6"
ActionIconSource="{StaticResource GoIcon}" Margin="0 0 0 5"
Command="{Binding $parent[tabs:LibrarySubmissionsView].DataContext.NavigateToEntry}" HorizontalAlignment="Stretch"
CommandParameter="{CompiledBinding}"> HorizontalContentAlignment="Stretch"
<controls:SettingsExpander.FooterTemplate> Command="{Binding $parent[tabs:LibrarySubmissionsView].DataContext.NavigateToEntry}"
<DataTemplate x:DataType="workshop:IGetSubmittedEntries_SubmittedEntries"> CommandParameter="{CompiledBinding}">
<Border Classes="badge" VerticalAlignment="Top" Margin="0 5 0 0"> <Grid ColumnDefinitions="Auto,*,Auto">
<TextBlock Text="{CompiledBinding EntryType}"></TextBlock> <!-- Icon -->
<Border Grid.Column="0"
CornerRadius="6"
VerticalAlignment="Center"
Margin="0 0 10 0"
Width="50"
Height="50"
ClipToBounds="True">
<Image Stretch="UniformToFill" asyncImageLoader:ImageLoader.Source="{CompiledBinding Id, Converter={StaticResource EntryIconUriConverter}, Mode=OneWay}" />
</Border> </Border>
</DataTemplate>
</controls:SettingsExpander.FooterTemplate> <!-- Body -->
</controls:SettingsExpander> <Grid Grid.Column="1" VerticalAlignment="Stretch" RowDefinitions="Auto,*,Auto">
</DataTemplate> <TextBlock Grid.Row="0"
</ItemsRepeater.ItemTemplate> Classes="h5 no-margin"
</ItemsRepeater> TextTrimming="CharacterEllipsis"
Text="{CompiledBinding Name, FallbackValue=Title}"/>
<TextBlock Grid.Row="1"
Classes="subtitle"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"
Text="{CompiledBinding Summary, FallbackValue=Summary}">
</TextBlock>
<ItemsControl Grid.Row="2" ItemsSource="{CompiledBinding Categories}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="8"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<avalonia:MaterialIcon Kind="{CompiledBinding Icon}" Margin="0 0 3 0"></avalonia:MaterialIcon>
<TextBlock Text="{CompiledBinding Name}" TextTrimming="CharacterEllipsis" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<!-- Info -->
<StackPanel Grid.Column="2" Margin="0 0 4 0">
<TextBlock TextAlignment="Right" Text="{CompiledBinding CreatedAt, FallbackValue=01-01-1337, Converter={StaticResource DateTimeConverter}}" />
<TextBlock TextAlignment="Right">
<avalonia:MaterialIcon Kind="Downloads" />
<Run Classes="h5" Text="{CompiledBinding Downloads, FallbackValue=0}" />
<Run>downloads</Run>
</TextBlock>
</StackPanel>
</Grid>
</Button>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
</ScrollViewer>
</Panel> </Panel>
</Panel> </Panel>

View File

@ -69,6 +69,7 @@ public class LibrarySubmissionsViewModel : ActivatableViewModelBase, IWorkshopVi
private async Task ExecuteLogin(CancellationToken ct) private async Task ExecuteLogin(CancellationToken ct)
{ {
await _windowService.CreateContentDialog().WithViewModel(out WorkshopLoginViewModel _).WithTitle("Workshop login").ShowAsync(); await _windowService.CreateContentDialog().WithViewModel(out WorkshopLoginViewModel _).WithTitle("Workshop login").ShowAsync();
await GetEntries(ct);
} }
private async Task ExecuteAddSubmission(CancellationToken arg) private async Task ExecuteAddSubmission(CancellationToken arg)

View File

@ -6,5 +6,9 @@ query GetSubmittedEntries($filter: EntryFilterInput) {
entryType entryType
downloads downloads
createdAt createdAt
categories {
name
icon
}
} }
} }