mirror of
https://jihulab.com/DGP-Studio/Snap.Hutao.git
synced 2025-11-19 21:02:53 +08:00
refactor GachaLog statistics
This commit is contained in:
@@ -18,11 +18,17 @@ internal partial class HorizontalEqualPanel : Microsoft.UI.Xaml.Controls.Panel
|
||||
|
||||
protected override Size MeasureOverride(Size availableSize)
|
||||
{
|
||||
int itemCount = Children.Count(child => child.Visibility is Visibility.Visible);
|
||||
foreach (UIElement child in Children)
|
||||
{
|
||||
if (child.Visibility is Visibility.Collapsed)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// ScrollViewer will always return an Infinity Size, we should use ActualWidth for this situation.
|
||||
double availableWidth = double.IsInfinity(availableSize.Width) ? ActualWidth : availableSize.Width;
|
||||
double childAvailableWidth = (availableWidth + Spacing) / Children.Count;
|
||||
double childAvailableWidth = (availableWidth + Spacing) / itemCount;
|
||||
double childMaxAvailableWidth = Math.Max(MinItemWidth, childAvailableWidth);
|
||||
child.Measure(new(childMaxAvailableWidth - Spacing, ActualHeight));
|
||||
}
|
||||
@@ -32,13 +38,18 @@ internal partial class HorizontalEqualPanel : Microsoft.UI.Xaml.Controls.Panel
|
||||
|
||||
protected override Size ArrangeOverride(Size finalSize)
|
||||
{
|
||||
int itemCount = Children.Count;
|
||||
int itemCount = Children.Count(child => child.Visibility is Visibility.Visible);
|
||||
double availableItemWidth = (finalSize.Width - (Spacing * (itemCount - 1))) / itemCount;
|
||||
double actualItemWidth = Math.Max(MinItemWidth, availableItemWidth);
|
||||
|
||||
double offset = 0;
|
||||
foreach (UIElement child in Children)
|
||||
{
|
||||
if (child.Visibility is Visibility.Collapsed)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
child.Arrange(new Rect(offset, 0, actualItemWidth, finalSize.Height));
|
||||
offset += actualItemWidth + Spacing;
|
||||
}
|
||||
|
||||
@@ -153,7 +153,6 @@
|
||||
<None Remove="View\Control\DescParamComboBox.xaml" />
|
||||
<None Remove="View\Control\Elevation.xaml" />
|
||||
<None Remove="View\Control\HutaoStatisticsCard.xaml" />
|
||||
<None Remove="View\Control\HutaoStatisticsPanel.xaml" />
|
||||
<None Remove="View\Control\ItemIcon.xaml" />
|
||||
<None Remove="View\Control\LaunchGameResourceExpander.xaml" />
|
||||
<None Remove="View\Control\LoadingView.xaml" />
|
||||
@@ -350,11 +349,6 @@
|
||||
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnablePreviewMsixTooling)'=='true'">
|
||||
<ProjectCapability Include="Msix" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Update="View\Control\HutaoStatisticsPanel.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Update="View\Dialog\LaunchGameConfigurationFixDialog.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
<shcp:HorizontalEqualPanel
|
||||
x:Class="Snap.Hutao.View.Control.HutaoStatisticsPanel"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shcp="using:Snap.Hutao.Control.Panel"
|
||||
xmlns:shvc="using:Snap.Hutao.View.Control"
|
||||
mc:Ignorable="d">
|
||||
<shvc:HutaoStatisticsCard DataContext="{x:Bind Statistics.AvatarEvent}"/>
|
||||
<shvc:HutaoStatisticsCard DataContext="{x:Bind Statistics.AvatarEvent2}"/>
|
||||
<shvc:HutaoStatisticsCard DataContext="{x:Bind Statistics.WeaponEvent}"/>
|
||||
</shcp:HorizontalEqualPanel>
|
||||
@@ -1,38 +0,0 @@
|
||||
// Copyright (c) DGP Studio. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using Microsoft.UI.Xaml;
|
||||
using Snap.Hutao.Control.Panel;
|
||||
using Snap.Hutao.ViewModel.GachaLog;
|
||||
|
||||
namespace Snap.Hutao.View.Control;
|
||||
|
||||
[DependencyProperty("Statistics", typeof(HutaoStatistics), default, nameof(OnStatisticsChanged))]
|
||||
internal sealed partial class HutaoStatisticsPanel : HorizontalEqualPanel
|
||||
{
|
||||
public HutaoStatisticsPanel()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (DataContext is HutaoStatistics statistics && statistics.Chronicled is { } chronicled)
|
||||
{
|
||||
Children.Add(new HutaoStatisticsCard
|
||||
{
|
||||
DataContext = chronicled,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnStatisticsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
HutaoStatisticsPanel panel = (HutaoStatisticsPanel)obj;
|
||||
|
||||
if (args.NewValue is HutaoStatistics { Chronicled: { } chronicled })
|
||||
{
|
||||
panel.Children.Add(new HutaoStatisticsCard
|
||||
{
|
||||
DataContext = chronicled,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -468,15 +468,18 @@
|
||||
Margin="16"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"/>
|
||||
<shvc:HutaoStatisticsPanel
|
||||
<shcp:HorizontalEqualPanel
|
||||
Margin="16"
|
||||
Spacing="16"
|
||||
Statistics="{Binding HutaoCloudStatisticsViewModel.Statistics}"
|
||||
Visibility="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding HutaoCloudStatisticsViewModel.OpenUICommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
</shvc:HutaoStatisticsPanel>
|
||||
<shvc:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent}"/>
|
||||
<shvc:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent2}"/>
|
||||
<shvc:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.WeaponEvent}"/>
|
||||
<shvc:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.Chronicled}" Visibility="{Binding Converter={StaticResource EmptyObjectToVisibilityConverter}, FallbackValue=Collapsed}"/>
|
||||
</shcp:HorizontalEqualPanel>
|
||||
</Grid>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
|
||||
Reference in New Issue
Block a user