mirror of
https://jihulab.com/DGP-Studio/Snap.Hutao.git
synced 2025-11-19 21:02:53 +08:00
replace with standardview
This commit is contained in:
@@ -23,9 +23,9 @@ internal sealed class AdvancedDbCollectionView<TEntity> : AdvancedCollectionView
|
||||
this.serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public IDisposable SuppressSavingToDatabase()
|
||||
public IDisposable SuppressChangeCurrentItem()
|
||||
{
|
||||
return new SavingToDatabaseSuppression(this);
|
||||
return new CurrentItemSuppression(this);
|
||||
}
|
||||
|
||||
protected override void OnCurrentChangedOverride()
|
||||
@@ -54,18 +54,21 @@ internal sealed class AdvancedDbCollectionView<TEntity> : AdvancedCollectionView
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class SavingToDatabaseSuppression : IDisposable
|
||||
private sealed class CurrentItemSuppression : IDisposable
|
||||
{
|
||||
private readonly AdvancedDbCollectionView<TEntity> view;
|
||||
private readonly TEntity? currentItem;
|
||||
|
||||
public SavingToDatabaseSuppression(AdvancedDbCollectionView<TEntity> view)
|
||||
public CurrentItemSuppression(AdvancedDbCollectionView<TEntity> view)
|
||||
{
|
||||
this.view = view;
|
||||
currentItem = view.CurrentItem;
|
||||
view.savingToDatabase = false;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
view.MoveCurrentTo(currentItem);
|
||||
view.savingToDatabase = true;
|
||||
}
|
||||
}
|
||||
@@ -87,9 +90,9 @@ internal sealed class AdvancedDbCollectionView<TEntityAccess, TEntity> : Advance
|
||||
this.serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public IDisposable SuppressSavingToDatabase()
|
||||
public IDisposable SuppressChangeCurrentItem()
|
||||
{
|
||||
return new SavingToDatabaseSuppression(this);
|
||||
return new CurrentItemSuppression(this);
|
||||
}
|
||||
|
||||
protected override void OnCurrentChangedOverride()
|
||||
@@ -118,18 +121,21 @@ internal sealed class AdvancedDbCollectionView<TEntityAccess, TEntity> : Advance
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class SavingToDatabaseSuppression : IDisposable
|
||||
private sealed class CurrentItemSuppression : IDisposable
|
||||
{
|
||||
private readonly AdvancedDbCollectionView<TEntityAccess, TEntity> view;
|
||||
private readonly TEntityAccess? currentItem;
|
||||
|
||||
public SavingToDatabaseSuppression(AdvancedDbCollectionView<TEntityAccess, TEntity> view)
|
||||
public CurrentItemSuppression(AdvancedDbCollectionView<TEntityAccess, TEntity> view)
|
||||
{
|
||||
this.view = view;
|
||||
currentItem = view.CurrentItem;
|
||||
view.savingToDatabase = false;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
view.MoveCurrentTo(currentItem);
|
||||
view.savingToDatabase = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,5 +8,5 @@ namespace Snap.Hutao.Core.Database;
|
||||
internal interface IAdvancedDbCollectionView<TEntity> : IAdvancedCollectionView<TEntity>
|
||||
where TEntity : class
|
||||
{
|
||||
IDisposable SuppressSavingToDatabase();
|
||||
IDisposable SuppressChangeCurrentItem();
|
||||
}
|
||||
@@ -117,12 +117,9 @@ internal sealed class UniformStaggeredLayoutState
|
||||
|
||||
internal void RecycleElements()
|
||||
{
|
||||
if (context.ItemCount > 0)
|
||||
for (int i = 0; i < context.ItemCount; i++)
|
||||
{
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
RecycleElementAt(i);
|
||||
}
|
||||
RecycleElementAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ internal sealed class WrapLayoutState
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
for (int i = 0; i < context.ItemCount; i++)
|
||||
{
|
||||
RecycleElementAt(i);
|
||||
}
|
||||
|
||||
@@ -491,7 +491,7 @@
|
||||
</ResourceDictionary>
|
||||
</Page.Resources>
|
||||
|
||||
<shuxc:StandardView ShowCondition="{Binding Summary, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Summary, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<Border
|
||||
HorizontalAlignment="Center"
|
||||
@@ -753,14 +753,6 @@
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
<ItemsControl
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="16"
|
||||
ItemTemplate="{StaticResource AvatarConstellationTemplate}"
|
||||
ItemsPanel="{StaticResource HorizontalStackPanelSpacing0Template}"
|
||||
ItemsSource="{Binding SelectedAvatar.Constellations}"/>
|
||||
|
||||
<StackPanel Grid.Column="1" Margin="16">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Right"
|
||||
@@ -794,6 +786,14 @@
|
||||
VerticalAlignment="Bottom"
|
||||
ItemTemplate="{StaticResource AvatarSkillTemplate}"
|
||||
ItemsSource="{Binding SelectedAvatar.Skills}"/>
|
||||
|
||||
<ItemsControl
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="16"
|
||||
ItemTemplate="{StaticResource AvatarConstellationTemplate}"
|
||||
ItemsPanel="{StaticResource HorizontalStackPanelSpacing0Template}"
|
||||
ItemsSource="{Binding SelectedAvatar.Constellations}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
|
||||
@@ -260,150 +260,8 @@
|
||||
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding LoadCommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
|
||||
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Grid Visibility="{Binding Projects.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}">
|
||||
<Pivot.RightHeader>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<AppBarElementContainer>
|
||||
<shuxc:SizeRestrictedContentControl Margin="6,6,6,6">
|
||||
<ComboBox
|
||||
DisplayMemberPath="Name"
|
||||
ItemsSource="{Binding Projects}"
|
||||
SelectedItem="{Binding Projects.CurrentItem, Mode=TwoWay}"
|
||||
Style="{ThemeResource CommandBarComboBoxStyle}"/>
|
||||
</shuxc:SizeRestrictedContentControl>
|
||||
</AppBarElementContainer>
|
||||
<AppBarButton
|
||||
Command="{Binding RefreshInventoryCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationRefreshInventory}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding AddProjectCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationAddProject}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding RemoveProjectCommand}"
|
||||
CommandParameter="{Binding Projects.CurrentItem, Mode=OneWay}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationRemoveProject}"/>
|
||||
</CommandBar>
|
||||
</Pivot.RightHeader>
|
||||
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialList}">
|
||||
<Grid>
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}" Visibility="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationCultivateEntry}">
|
||||
<ScrollViewer Padding="0,0">
|
||||
<ItemsRepeater
|
||||
Margin="16,16,16,0"
|
||||
ItemTemplate="{StaticResource CultivateEntryTemplate}"
|
||||
ItemsSource="{Binding CultivateEntries}">
|
||||
<ItemsRepeater.Layout>
|
||||
<shuxcl:UniformStaggeredLayout
|
||||
MinColumnSpacing="12"
|
||||
MinItemWidth="300"
|
||||
MinRowSpacing="-4"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialStatistics}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<ScrollViewer Padding="16,0">
|
||||
<ItemsRepeater
|
||||
Margin="0,16,0,0"
|
||||
ItemTemplate="{StaticResource StatisticsItemTemplate}"
|
||||
ItemsSource="{Binding StatisticsItems}">
|
||||
<ItemsRepeater.Layout>
|
||||
<UniformGridLayout
|
||||
ItemsJustification="Start"
|
||||
ItemsStretch="Fill"
|
||||
MinColumnSpacing="12"
|
||||
MinItemWidth="240"
|
||||
MinRowSpacing="-4"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Border>
|
||||
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
<Border Visibility="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
|
||||
<Border
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border
|
||||
MinWidth="480"
|
||||
Padding="16"
|
||||
Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="{StaticResource SettingsCardSpacing}">
|
||||
<StackPanel.Resources>
|
||||
<Thickness x:Key="SettingsCardPadding">16</Thickness>
|
||||
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
|
||||
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
|
||||
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
|
||||
</StackPanel.Resources>
|
||||
<shuxci:CachedImage
|
||||
Height="120"
|
||||
Margin="0,0,0,16"
|
||||
Source="{StaticResource UI_EmotionIcon433}"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiAvatarPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiAvatarDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewWikiAvatarHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiAvatar.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiWeaponPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiWeaponDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewWikiWeaponHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiWeapon.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.AvatarPropertyPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationAvatarPropertyDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewAvatarPropertyHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/Cultivation.png}"
|
||||
IsClickEnabled="True"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</Border>
|
||||
</Grid>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationInventoryItem}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<!-- Add a ScrollView for smooth scrolling -->
|
||||
<ScrollView HorizontalScrollBarVisibility="Hidden">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
|
||||
<ItemsRepeater
|
||||
Margin="16"
|
||||
ItemTemplate="{StaticResource InventoryItemTemplate}"
|
||||
ItemsSource="{Binding InventoryItems}">
|
||||
<ItemsRepeater.Layout>
|
||||
<shuxcl:WrapLayout HorizontalSpacing="12" VerticalSpacing="12"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</ScrollView>
|
||||
</Border>
|
||||
</Border>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
</Grid>
|
||||
|
||||
<Grid Visibility="{Binding Projects.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
|
||||
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Projects.Count, Converter={StaticResource Int32ToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<Border
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
@@ -434,6 +292,145 @@
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}">
|
||||
<Pivot.RightHeader>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<AppBarElementContainer>
|
||||
<shuxc:SizeRestrictedContentControl Margin="6,6,6,6">
|
||||
<ComboBox
|
||||
DisplayMemberPath="Name"
|
||||
ItemsSource="{Binding Projects}"
|
||||
SelectedItem="{Binding Projects.CurrentItem, Mode=TwoWay}"
|
||||
Style="{ThemeResource CommandBarComboBoxStyle}"/>
|
||||
</shuxc:SizeRestrictedContentControl>
|
||||
</AppBarElementContainer>
|
||||
<AppBarButton
|
||||
Command="{Binding RefreshInventoryCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationRefreshInventory}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding AddProjectCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationAddProject}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding RemoveProjectCommand}"
|
||||
CommandParameter="{Binding Projects.CurrentItem, Mode=OneWay}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageCultivationRemoveProject}"/>
|
||||
</CommandBar>
|
||||
</Pivot.RightHeader>
|
||||
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialList}">
|
||||
<shuxc:StandardView HideCondition="{Binding EntriesUpdating}" ShowCondition="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<Border
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border
|
||||
MinWidth="480"
|
||||
Padding="16"
|
||||
Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="{StaticResource SettingsCardSpacing}">
|
||||
<StackPanel.Resources>
|
||||
<Thickness x:Key="SettingsCardPadding">16</Thickness>
|
||||
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
|
||||
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
|
||||
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
|
||||
</StackPanel.Resources>
|
||||
<shuxci:CachedImage
|
||||
Height="120"
|
||||
Margin="0,0,0,16"
|
||||
Source="{StaticResource UI_EmotionIcon433}"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiAvatarPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiAvatarDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewWikiAvatarHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiAvatar.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiWeaponPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiWeaponDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewWikiWeaponHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiWeapon.png}"
|
||||
IsClickEnabled="True"/>
|
||||
<cwcont:SettingsCard
|
||||
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
|
||||
Command="{Binding NavigateToPageCommand}"
|
||||
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.AvatarPropertyPage"
|
||||
Description="{shuxm:ResourceString Name=ViewPageCultivationAvatarPropertyDescription}"
|
||||
Header="{shuxm:ResourceString Name=ViewAvatarPropertyHeader}"
|
||||
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/Cultivation.png}"
|
||||
IsClickEnabled="True"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}">
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationCultivateEntry}">
|
||||
<ScrollViewer Padding="0,0">
|
||||
<ItemsRepeater
|
||||
Margin="16,16,16,0"
|
||||
ItemTemplate="{StaticResource CultivateEntryTemplate}"
|
||||
ItemsSource="{Binding CultivateEntries}">
|
||||
<ItemsRepeater.Layout>
|
||||
<shuxcl:UniformStaggeredLayout
|
||||
MinColumnSpacing="12"
|
||||
MinItemWidth="300"
|
||||
MinRowSpacing="-4"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialStatistics}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<ScrollViewer Padding="16,0">
|
||||
<ItemsRepeater
|
||||
Margin="0,16,0,0"
|
||||
ItemTemplate="{StaticResource StatisticsItemTemplate}"
|
||||
ItemsSource="{Binding StatisticsItems}">
|
||||
<ItemsRepeater.Layout>
|
||||
<UniformGridLayout
|
||||
ItemsJustification="Start"
|
||||
ItemsStretch="Fill"
|
||||
MinColumnSpacing="12"
|
||||
MinItemWidth="240"
|
||||
MinRowSpacing="-4"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Border>
|
||||
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
</shuxc:StandardView>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationInventoryItem}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<!-- Add a ScrollView for smooth scrolling -->
|
||||
<ScrollView HorizontalScrollBarVisibility="Hidden">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
|
||||
<ItemsRepeater
|
||||
Margin="16"
|
||||
ItemTemplate="{StaticResource InventoryItemTemplate}"
|
||||
ItemsSource="{Binding InventoryItems}">
|
||||
<ItemsRepeater.Layout>
|
||||
<shuxcl:WrapLayout HorizontalSpacing="12" VerticalSpacing="12"/>
|
||||
</ItemsRepeater.Layout>
|
||||
</ItemsRepeater>
|
||||
</ScrollViewer>
|
||||
</ScrollView>
|
||||
</Border>
|
||||
</Border>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
</shuxc:StandardView>
|
||||
</shuxc:ScopedPage>
|
||||
|
||||
@@ -235,270 +235,8 @@
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<Grid Visibility="{Binding Statistics, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}">
|
||||
<Pivot.LeftHeader>
|
||||
<shuxc:SizeRestrictedContentControl Margin="6,6,0,6">
|
||||
<ComboBox
|
||||
DisplayMemberPath="Uid"
|
||||
ItemsSource="{Binding Archives}"
|
||||
SelectedItem="{Binding Archives.CurrentItem, Mode=TwoWay}"
|
||||
Style="{ThemeResource CommandBarComboBoxStyle}"/>
|
||||
</shuxc:SizeRestrictedContentControl>
|
||||
</Pivot.LeftHeader>
|
||||
<Pivot.RightHeader>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<CommandBar.Resources>
|
||||
<StaticResource x:Key="CommandBarBackgroundOpen" ResourceKey="ControlFillColorTransparentBrush"/>
|
||||
<Thickness x:Key="CommandBarBorderThicknessOpen">0</Thickness>
|
||||
</CommandBar.Resources>
|
||||
<AppBarButton Icon="{shuxm:FontIcon Glyph=}" Label="{shuxm:ResourceString Name=ViewPageGachaLogRefresh}">
|
||||
<AppBarButton.Flyout>
|
||||
<MenuFlyout Placement="Bottom">
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshBySTokenCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshBySToken}"/>
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshByWebCacheCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByWebCache}"/>
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshByManualInputCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByManualInput}"/>
|
||||
<ToggleMenuFlyoutItem
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
IsChecked="{Binding IsAggressiveRefresh, Mode=TwoWay}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogAggressiveRefresh}"/>
|
||||
</MenuFlyout>
|
||||
</AppBarButton.Flyout>
|
||||
</AppBarButton>
|
||||
<AppBarSeparator/>
|
||||
<AppBarButton
|
||||
Flyout="{StaticResource HutaoCloudFlyout}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogHutaoCloud}"/>
|
||||
<AppBarSeparator/>
|
||||
<AppBarButton
|
||||
Command="{Binding ImportFromUIGFJsonCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogImportAction}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding ExportToUIGFJsonCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogExportAction}"/>
|
||||
<CommandBar.SecondaryCommands>
|
||||
<AppBarButton
|
||||
Command="{Binding RemoveArchiveCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogRemoveArchiveAction}"/>
|
||||
</CommandBar.SecondaryCommands>
|
||||
</CommandBar>
|
||||
</Pivot.RightHeader>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotOverview}">
|
||||
<ScrollViewer
|
||||
Margin="16,0"
|
||||
cw:ScrollViewerExtensions.HorizontalScrollBarMargin="0,0,-16,0"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
HorizontalScrollMode="Enabled"
|
||||
VerticalScrollMode="Disabled">
|
||||
<shuxcp:HorizontalEqualPanel
|
||||
Margin="0,16"
|
||||
MinItemWidth="302"
|
||||
Spacing="16">
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.AvatarWish}"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.WeaponWish}"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.StandardWish}" ShowUpPull="False"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.ChronicledWish}" ShowUpPull="False"/>
|
||||
</shuxcp:HorizontalEqualPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotHistory}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<SplitView
|
||||
DisplayMode="Inline"
|
||||
IsPaneOpen="True"
|
||||
OpenPaneLength="408"
|
||||
PaneBackground="{ThemeResource CardBackgroundFillColorSecondaryBrush}">
|
||||
<SplitView.Pane>
|
||||
<ListView
|
||||
Padding="{ThemeResource ListViewInSplitPanePadding}"
|
||||
ItemTemplate="{StaticResource HistoryWishListTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes}"
|
||||
SelectedItem="{Binding Statistics.HistoryWishes.CurrentItem, Mode=TwoWay}"/>
|
||||
</SplitView.Pane>
|
||||
<SplitView.Content>
|
||||
<ScrollViewer>
|
||||
<StackPanel>
|
||||
<Border
|
||||
Margin="16"
|
||||
HorizontalAlignment="Left"
|
||||
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Grid HorizontalAlignment="Center" Style="{StaticResource AcrylicGridCardStyle}">
|
||||
<cwcont:ConstrainedBox AspectRatio="1080:533">
|
||||
<shuxci:CachedImage
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
Source="{Binding Statistics.HistoryWishes.CurrentItem.BannerImage}"
|
||||
Stretch="UniformToFill"/>
|
||||
</cwcont:ConstrainedBox>
|
||||
<Border
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{ThemeResource DarkOnlyOverlayMaskColorBrush}"
|
||||
IsHitTestVisible="False"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<StackPanel Margin="16,0,0,0" Spacing="8">
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList}"
|
||||
SelectionMode="None"/>
|
||||
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList}"
|
||||
SelectionMode="None"/>
|
||||
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.BlueList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.BlueList}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</SplitView.Content>
|
||||
</SplitView>
|
||||
</Border>
|
||||
</Border>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotAvatar}">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="16,0,16,16">
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource OrangeColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.OrangeAvatars}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource PurpleColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.PurpleAvatars}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotWeapon}">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="16,0,16,16">
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource OrangeColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.OrangeWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource PurpleColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.PurpleWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource BlueColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.BlueWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotStatistics}">
|
||||
<Grid>
|
||||
<shuxc:Loading
|
||||
Margin="16"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"
|
||||
Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
<shuxcp:HorizontalEqualPanel
|
||||
Margin="16"
|
||||
Spacing="16"
|
||||
Visibility="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding HutaoCloudStatisticsViewModel.LoadCommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent2}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.WeaponEvent}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.Chronicled}" Visibility="{Binding Converter={StaticResource EmptyObjectToVisibilityConverter}, FallbackValue=Collapsed}"/>
|
||||
</shuxcp:HorizontalEqualPanel>
|
||||
</Grid>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
</Grid>
|
||||
<Grid Visibility="{Binding Statistics, Converter={StaticResource EmptyObjectToVisibilityRevertConverter}}">
|
||||
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Statistics, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<Border
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
@@ -559,6 +297,266 @@
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Pivot Style="{ThemeResource CardPivotStyle}">
|
||||
<Pivot.LeftHeader>
|
||||
<shuxc:SizeRestrictedContentControl Margin="6,6,0,6">
|
||||
<ComboBox
|
||||
DisplayMemberPath="Uid"
|
||||
ItemsSource="{Binding Archives}"
|
||||
SelectedItem="{Binding Archives.CurrentItem, Mode=TwoWay}"
|
||||
Style="{ThemeResource CommandBarComboBoxStyle}"/>
|
||||
</shuxc:SizeRestrictedContentControl>
|
||||
</Pivot.LeftHeader>
|
||||
<Pivot.RightHeader>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<CommandBar.Resources>
|
||||
<StaticResource x:Key="CommandBarBackgroundOpen" ResourceKey="ControlFillColorTransparentBrush"/>
|
||||
<Thickness x:Key="CommandBarBorderThicknessOpen">0</Thickness>
|
||||
</CommandBar.Resources>
|
||||
<AppBarButton Icon="{shuxm:FontIcon Glyph=}" Label="{shuxm:ResourceString Name=ViewPageGachaLogRefresh}">
|
||||
<AppBarButton.Flyout>
|
||||
<MenuFlyout Placement="Bottom">
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshBySTokenCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshBySToken}"/>
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshByWebCacheCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByWebCache}"/>
|
||||
<MenuFlyoutItem
|
||||
Command="{Binding RefreshByManualInputCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByManualInput}"/>
|
||||
<ToggleMenuFlyoutItem
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
IsChecked="{Binding IsAggressiveRefresh, Mode=TwoWay}"
|
||||
Text="{shuxm:ResourceString Name=ViewPageGachaLogAggressiveRefresh}"/>
|
||||
</MenuFlyout>
|
||||
</AppBarButton.Flyout>
|
||||
</AppBarButton>
|
||||
<AppBarSeparator/>
|
||||
<AppBarButton
|
||||
Flyout="{StaticResource HutaoCloudFlyout}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogHutaoCloud}"/>
|
||||
<AppBarSeparator/>
|
||||
<AppBarButton
|
||||
Command="{Binding ImportFromUIGFJsonCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogImportAction}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding ExportToUIGFJsonCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogExportAction}"/>
|
||||
<CommandBar.SecondaryCommands>
|
||||
<AppBarButton
|
||||
Command="{Binding RemoveArchiveCommand}"
|
||||
Icon="{shuxm:FontIcon Glyph=}"
|
||||
Label="{shuxm:ResourceString Name=ViewPageGachaLogRemoveArchiveAction}"/>
|
||||
</CommandBar.SecondaryCommands>
|
||||
</CommandBar>
|
||||
</Pivot.RightHeader>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotOverview}">
|
||||
<ScrollViewer
|
||||
Margin="16,0"
|
||||
cw:ScrollViewerExtensions.HorizontalScrollBarMargin="0,0,-16,0"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
HorizontalScrollMode="Enabled"
|
||||
VerticalScrollMode="Disabled">
|
||||
<shuxcp:HorizontalEqualPanel
|
||||
Margin="0,16"
|
||||
MinItemWidth="302"
|
||||
Spacing="16">
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.AvatarWish}"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.WeaponWish}"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.StandardWish}" ShowUpPull="False"/>
|
||||
<shuxvs:StatisticsCard DataContext="{Binding Statistics.ChronicledWish}" ShowUpPull="False"/>
|
||||
</shuxcp:HorizontalEqualPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotHistory}">
|
||||
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<SplitView
|
||||
DisplayMode="Inline"
|
||||
IsPaneOpen="True"
|
||||
OpenPaneLength="408"
|
||||
PaneBackground="{ThemeResource CardBackgroundFillColorSecondaryBrush}">
|
||||
<SplitView.Pane>
|
||||
<ListView
|
||||
Padding="{ThemeResource ListViewInSplitPanePadding}"
|
||||
ItemTemplate="{StaticResource HistoryWishListTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes}"
|
||||
SelectedItem="{Binding Statistics.HistoryWishes.CurrentItem, Mode=TwoWay}"/>
|
||||
</SplitView.Pane>
|
||||
<SplitView.Content>
|
||||
<ScrollViewer>
|
||||
<StackPanel>
|
||||
<Border
|
||||
Margin="16"
|
||||
HorizontalAlignment="Left"
|
||||
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Grid HorizontalAlignment="Center" Style="{StaticResource AcrylicGridCardStyle}">
|
||||
<cwcont:ConstrainedBox AspectRatio="1080:533">
|
||||
<shuxci:CachedImage
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
Source="{Binding Statistics.HistoryWishes.CurrentItem.BannerImage}"
|
||||
Stretch="UniformToFill"/>
|
||||
</cwcont:ConstrainedBox>
|
||||
<Border
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{ThemeResource DarkOnlyOverlayMaskColorBrush}"
|
||||
IsHitTestVisible="False"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<StackPanel Margin="16,0,0,0" Spacing="8">
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList}"
|
||||
SelectionMode="None"/>
|
||||
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList}"
|
||||
SelectionMode="None"/>
|
||||
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"
|
||||
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.BlueList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.BlueList}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</SplitView.Content>
|
||||
</SplitView>
|
||||
</Border>
|
||||
</Border>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotAvatar}">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="16,0,16,16">
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource OrangeColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.OrangeAvatars}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource PurpleColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.PurpleAvatars}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotWeapon}">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="16,0,16,16">
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource OrangeColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.OrangeWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource PurpleColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.PurpleWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
|
||||
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock
|
||||
Foreground="{ThemeResource BlueColorBrush}"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"/>
|
||||
<GridView
|
||||
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
|
||||
ItemsSource="{Binding Statistics.BlueWeapons}"
|
||||
SelectionMode="None"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotStatistics}">
|
||||
<Grid>
|
||||
<shuxc:Loading
|
||||
Margin="16"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"
|
||||
Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
<shuxcp:HorizontalEqualPanel
|
||||
Margin="16"
|
||||
Spacing="16"
|
||||
Visibility="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<mxi:Interaction.Behaviors>
|
||||
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding HutaoCloudStatisticsViewModel.LoadCommand}"/>
|
||||
</mxi:Interaction.Behaviors>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent2}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.WeaponEvent}"/>
|
||||
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.Chronicled}" Visibility="{Binding Converter={StaticResource EmptyObjectToVisibilityConverter}, FallbackValue=Collapsed}"/>
|
||||
</shuxcp:HorizontalEqualPanel>
|
||||
</Grid>
|
||||
</PivotItem>
|
||||
</Pivot>
|
||||
</shuxc:StandardView>
|
||||
</shuxc:ScopedPage>
|
||||
@@ -300,8 +300,11 @@
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid Visibility="{Binding Avatars, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
|
||||
<shuxc:StandardView ShowCondition="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<shuxc:Loading IsLoading="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
@@ -812,6 +815,6 @@
|
||||
</cwc:Case>
|
||||
</cwc:SwitchPresenter>
|
||||
</Grid>
|
||||
<shuxc:Loading IsLoading="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</Grid>
|
||||
|
||||
</shuxc:StandardView>
|
||||
</shuxc:ScopedPage>
|
||||
@@ -86,8 +86,11 @@
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid Visibility="{Binding Monsters, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
|
||||
<shuxc:StandardView ShowCondition="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<shuxc:Loading IsLoading="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
@@ -220,6 +223,5 @@
|
||||
</cwc:Case>
|
||||
</cwc:SwitchPresenter>
|
||||
</Grid>
|
||||
<shuxc:Loading IsLoading="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</Grid>
|
||||
</shuxc:StandardView>
|
||||
</shuxc:ScopedPage>
|
||||
|
||||
@@ -162,8 +162,11 @@
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid Visibility="{Binding Weapons, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
|
||||
<shuxc:StandardView ShowCondition="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolConverter}}">
|
||||
<shuxc:StandardView.EmptyContent>
|
||||
<shuxc:Loading IsLoading="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</shuxc:StandardView.EmptyContent>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
@@ -419,6 +422,5 @@
|
||||
</cwc:SwitchPresenter>
|
||||
|
||||
</Grid>
|
||||
<shuxc:Loading IsLoading="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
|
||||
</Grid>
|
||||
</shuxc:StandardView>
|
||||
</shuxc:ScopedPage>
|
||||
|
||||
@@ -148,7 +148,7 @@ internal sealed partial class AchievementViewModel : Abstraction.ViewModel, INav
|
||||
|
||||
protected override void UninitializeOverride()
|
||||
{
|
||||
using (Archives?.SuppressSavingToDatabase())
|
||||
using (Archives?.SuppressChangeCurrentItem())
|
||||
{
|
||||
Archives = default;
|
||||
}
|
||||
|
||||
@@ -122,6 +122,7 @@ internal sealed partial class AvatarPropertyViewModel : Abstraction.ViewModel, I
|
||||
{
|
||||
try
|
||||
{
|
||||
IsInitialized = false;
|
||||
ValueResult<RefreshResultKind, Summary?> summaryResult;
|
||||
using (await EnterCriticalSectionAsync().ConfigureAwait(false))
|
||||
{
|
||||
@@ -166,6 +167,10 @@ internal sealed partial class AvatarPropertyViewModel : Abstraction.ViewModel, I
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
[Command("CultivateCommand")]
|
||||
|
||||
@@ -41,6 +41,7 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
|
||||
private List<InventoryItemView>? inventoryItems;
|
||||
private ObservableCollection<CultivateEntryView>? cultivateEntries;
|
||||
private ObservableCollection<StatisticsCultivateItem>? statisticsItems;
|
||||
private bool entriesUpdating;
|
||||
|
||||
public AdvancedDbCollectionView<CultivateProject>? Projects
|
||||
{
|
||||
@@ -65,6 +66,8 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
|
||||
|
||||
public ObservableCollection<CultivateEntryView>? CultivateEntries { get => cultivateEntries; set => SetProperty(ref cultivateEntries, value); }
|
||||
|
||||
public bool EntriesUpdating { get => entriesUpdating; set => SetProperty(ref entriesUpdating, value); }
|
||||
|
||||
public ObservableCollection<StatisticsCultivateItem>? StatisticsItems { get => statisticsItems; set => SetProperty(ref statisticsItems, value); }
|
||||
|
||||
protected override async ValueTask<bool> InitializeOverrideAsync()
|
||||
@@ -74,6 +77,13 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
Projects = cultivationService.Projects;
|
||||
Projects.MoveCurrentTo(Projects.SourceCollection.SelectedOrDefault());
|
||||
|
||||
// Force update when re-entering the page
|
||||
if (Projects.CurrentItem is not null && CultivateEntries is null)
|
||||
{
|
||||
await UpdateEntryCollectionAsync(Projects.CurrentItem).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -82,7 +92,7 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
|
||||
|
||||
protected override void UninitializeOverride()
|
||||
{
|
||||
using (Projects?.SuppressSavingToDatabase())
|
||||
using (Projects?.SuppressChangeCurrentItem())
|
||||
{
|
||||
Projects = default;
|
||||
}
|
||||
@@ -146,22 +156,31 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
|
||||
|
||||
private async ValueTask UpdateEntryCollectionAsync(CultivateProject? project)
|
||||
{
|
||||
if (project is null)
|
||||
try
|
||||
{
|
||||
return;
|
||||
EntriesUpdating = true;
|
||||
if (project is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CultivationMetadataContext context = await metadataService.GetContextAsync<CultivationMetadataContext>().ConfigureAwait(false);
|
||||
|
||||
ObservableCollection<CultivateEntryView> entries = await cultivationService
|
||||
.GetCultivateEntriesAsync(project, context)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
CultivateEntries = entries;
|
||||
|
||||
await UpdateInventoryItemsAsync().ConfigureAwait(false);
|
||||
await UpdateStatisticsItemsAsync().ConfigureAwait(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
EntriesUpdating = false;
|
||||
}
|
||||
|
||||
CultivationMetadataContext context = await metadataService.GetContextAsync<CultivationMetadataContext>().ConfigureAwait(false);
|
||||
|
||||
ObservableCollection<CultivateEntryView> entries = await cultivationService
|
||||
.GetCultivateEntriesAsync(project, context)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await taskContext.SwitchToMainThreadAsync();
|
||||
CultivateEntries = entries;
|
||||
|
||||
await UpdateInventoryItemsAsync().ConfigureAwait(false);
|
||||
await UpdateStatisticsItemsAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[Command("RemoveEntryCommand")]
|
||||
|
||||
@@ -92,7 +92,14 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
|
||||
Archives.MoveCurrentTo(Archives.SourceCollection.SelectedOrDefault());
|
||||
}
|
||||
|
||||
return true;
|
||||
// When `Archives.CurrentItem` is not null, the `Initialization` actually completed in
|
||||
// `UpdateStatisticsAsync`, so we return false to make the view hide until the actual
|
||||
// initialization is complete. But we return true when no archives are available,
|
||||
// so that the empty view can show up.
|
||||
if (Archives.CurrentItem is null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
@@ -104,7 +111,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
|
||||
|
||||
protected override void UninitializeOverride()
|
||||
{
|
||||
using (Archives?.SuppressSavingToDatabase())
|
||||
using (Archives?.SuppressChangeCurrentItem())
|
||||
{
|
||||
Archives = default;
|
||||
}
|
||||
@@ -311,6 +318,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
|
||||
{
|
||||
if (archive is null)
|
||||
{
|
||||
IsInitialized = false;
|
||||
Statistics = default;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user