add installer

This commit is contained in:
DismissedLight
2022-11-05 20:45:38 +08:00
parent f2d63e69ea
commit 77158fc708
30 changed files with 570 additions and 220 deletions

4
.gitignore vendored
View File

@@ -11,6 +11,10 @@ src/Snap.Hutao/Snap.Hutao/bin/
src/Snap.Hutao/Snap.Hutao/obj/ src/Snap.Hutao/Snap.Hutao/obj/
src/Snap.Hutao/Snap.Hutao/Snap.Hutao_TemporaryKey.pfx src/Snap.Hutao/Snap.Hutao/Snap.Hutao_TemporaryKey.pfx
src/Snap.Hutao/Snap.Hutao.Installer/bin/
src/Snap.Hutao/Snap.Hutao.Installer/obj/
src/Snap.Hutao/Snap.Hutao.Installer/Properties/PublishProfiles/FolderProfile.pubxml.user
src/Snap.Hutao/Snap.Hutao.SourceGeneration/bin/ src/Snap.Hutao/Snap.Hutao.SourceGeneration/bin/
src/Snap.Hutao/Snap.Hutao.SourceGeneration/obj/ src/Snap.Hutao/Snap.Hutao.SourceGeneration/obj/

View File

@@ -37,4 +37,3 @@
* [microsoft/vs-validation](https://github.com/microsoft/vs-validation) * [microsoft/vs-validation](https://github.com/microsoft/vs-validation)
* [microsoft/WindowsAppSDK](https://github.com/microsoft/WindowsAppSDK) * [microsoft/WindowsAppSDK](https://github.com/microsoft/WindowsAppSDK)
* [microsoft/microsoft-ui-xaml](https://github.com/microsoft/microsoft-ui-xaml) * [microsoft/microsoft-ui-xaml](https://github.com/microsoft/microsoft-ui-xaml)
* [MiniExcel/MiniExcel](https://github.com/MiniExcel/MiniExcel)

View File

@@ -0,0 +1,72 @@
using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
namespace Snap.Hutao.Installer;
internal class Program
{
private const string AppxKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Appx";
private const string ValueName = "AllowDevelopmentWithoutDevLicense";
public static async Task Main(string[] args)
{
string ps1File = Path.Combine(AppContext.BaseDirectory, "Install.ps1");
if (!File.Exists(ps1File))
{
Console.WriteLine("未检测到 Install.ps1 文件");
Console.WriteLine("请勿移动该安装程序,按下任意键退出...");
Console.ReadKey();
return;
}
try
{
//以管理策略打开开发者模式
Registry.SetValue(AppxKey, ValueName, 1, RegistryValueKind.DWord);
}
catch (Exception)
{
Console.WriteLine("开发者模式未开启,请手动开启,参阅下方链接");
Console.WriteLine("https://learn.microsoft.com/zh-CN/windows/apps/get-started/developer-mode-features-and-debugging");
}
await InstallAsync(ps1File).ConfigureAwait(false);
Console.WriteLine();
Console.WriteLine("官方文档与使用教程");
Console.WriteLine("https://hut.ao");
Console.WriteLine();
Console.WriteLine("在开始菜单中启动 Snap.Hutao ,按下任意键退出...");
Console.ReadKey();
}
private static async Task InstallAsync(string ps1File)
{
Console.WriteLine("请注意 PowerShell 中的提示");
Process ps = new()
{
StartInfo = new ProcessStartInfo()
{
FileName = "powershell.exe",
Arguments = $"-ExecutionPolicy Unrestricted \"{ps1File}\"",
UseShellExecute = true,
}
};
try
{
ps.Start();
await ps.WaitForExitAsync();
Console.WriteLine("安装脚本运行完成");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}

View File

@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<PublishTrimmed>true</PublishTrimmed>
<ApplicationManifest>app.manifest</ApplicationManifest>
<DebugType>embedded</DebugType>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
元素。
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI无需
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
-->
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

@@ -14,6 +14,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SettingsUI", "SettingsUI\Se
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Snap.Hutao.SourceGeneration", "Snap.Hutao.SourceGeneration\Snap.Hutao.SourceGeneration.csproj", "{8B96721E-5604-47D2-9B72-06FEBAD0CE00}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Snap.Hutao.SourceGeneration", "Snap.Hutao.SourceGeneration\Snap.Hutao.SourceGeneration.csproj", "{8B96721E-5604-47D2-9B72-06FEBAD0CE00}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Snap.Hutao.Installer", "Snap.Hutao.Installer\Snap.Hutao.Installer.csproj", "{CEC01691-F65E-4874-9AE2-F571369A7631}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -82,6 +84,22 @@ Global
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x64.Build.0 = Release|x64 {8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x64.Build.0 = Release|x64
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.ActiveCfg = Release|Any CPU {8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.ActiveCfg = Release|Any CPU
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.Build.0 = Release|Any CPU {8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|arm64.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|arm64.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x64.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x64.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x86.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x86.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|Any CPU.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|arm64.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|arm64.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x64.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x64.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x86.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@@ -25,6 +25,8 @@
<Thickness x:Key="InfoBarContentRootPadding">16,0,0,0</Thickness> <Thickness x:Key="InfoBarContentRootPadding">16,0,0,0</Thickness>
<!--Pivot Resource--> <!--Pivot Resource-->
<x:Double x:Key="PivotHeaderItemFontSize">16</x:Double> <x:Double x:Key="PivotHeaderItemFontSize">16</x:Double>
<Thickness x:Key="PivotHeaderItemMargin">16,0,0,0</Thickness>
<Thickness x:Key="PivotItemMargin">0</Thickness>
<!--CornerRadius--> <!--CornerRadius-->
<CornerRadius x:Key="CompatCornerRadius">6</CornerRadius> <CornerRadius x:Key="CompatCornerRadius">6</CornerRadius>
<CornerRadius x:Key="CompatCornerRadiusTop">6,6,0,0</CornerRadius> <CornerRadius x:Key="CompatCornerRadiusTop">6,6,0,0</CornerRadius>
@@ -46,6 +48,22 @@
<shmmc:QualityColorConverter x:Key="QualityColorConverter"/> <shmmc:QualityColorConverter x:Key="QualityColorConverter"/>
<shmmc:WeaponTypeIconConverter x:Key="WeaponTypeIconConverter"/> <shmmc:WeaponTypeIconConverter x:Key="WeaponTypeIconConverter"/>
<shvc:BoolToVisibilityRevertConverter x:Key="BoolToVisibilityRevertConverter"/> <shvc:BoolToVisibilityRevertConverter x:Key="BoolToVisibilityRevertConverter"/>
<!--Styles-->
<Style
x:Key="LargeGridViewItemStyle"
TargetType="GridViewItem"
BasedOn="{StaticResource DefaultGridViewItemStyle}">
<Setter Property="Margin" Value="0,0,12,12"/>
</Style>
<!--ItemsPanelTemplate-->
<ItemsPanelTemplate x:Key="ItemsStackPanelTemplate">
<ItemsStackPanel/>
</ItemsPanelTemplate>
<ItemsPanelTemplate x:Key="HorizontalStackPanelTemplate">
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>
</Application> </Application>

View File

@@ -7,7 +7,6 @@ using Snap.Hutao.Core;
using Snap.Hutao.Core.Exception; using Snap.Hutao.Core.Exception;
using Snap.Hutao.Core.LifeCycle; using Snap.Hutao.Core.LifeCycle;
using Snap.Hutao.Core.Logging; using Snap.Hutao.Core.Logging;
using Snap.Hutao.Core.Threading;
using Snap.Hutao.Extension; using Snap.Hutao.Extension;
using Snap.Hutao.Service.Metadata; using Snap.Hutao.Service.Metadata;
using System.Diagnostics; using System.Diagnostics;

View File

@@ -30,6 +30,7 @@ public class ScopedPage : Page
/// <summary> /// <summary>
/// 初始化 /// 初始化
/// 应当在 InitializeComponent() 前调用
/// </summary> /// </summary>
/// <typeparam name="TViewModel">视图模型类型</typeparam> /// <typeparam name="TViewModel">视图模型类型</typeparam>
public void InitializeWith<TViewModel>() public void InitializeWith<TViewModel>()

View File

@@ -11,6 +11,7 @@ global using Microsoft.Extensions.Logging;
// Snap.Hutao // Snap.Hutao
global using Snap.Hutao.Core.DependencyInjection; global using Snap.Hutao.Core.DependencyInjection;
global using Snap.Hutao.Core.DependencyInjection.Annotation; global using Snap.Hutao.Core.DependencyInjection.Annotation;
global using Snap.Hutao.Core.Threading;
global using Snap.Hutao.Core.Validation; global using Snap.Hutao.Core.Validation;
// Runtime // Runtime

View File

@@ -21,6 +21,7 @@ public class ComplexAvatar
{ {
Name = avatar.Name; Name = avatar.Name;
Icon = AvatarIconConverter.IconNameToUri(avatar.Icon); Icon = AvatarIconConverter.IconNameToUri(avatar.Icon);
SideIcon = AvatarSideIconConverter.IconNameToUri(avatar.SideIcon);
Quality = avatar.Quality; Quality = avatar.Quality;
Rate = $"{rate:P3}"; Rate = $"{rate:P3}";
} }
@@ -35,6 +36,11 @@ public class ComplexAvatar
/// </summary> /// </summary>
public Uri Icon { get; set; } = default!; public Uri Icon { get; set; } = default!;
/// <summary>
/// 侧面图标
/// </summary>
public Uri SideIcon { get; set; } = default!;
/// <summary> /// <summary>
/// 星级 /// 星级
/// </summary> /// </summary>

View File

@@ -12,9 +12,19 @@ internal class AvatarSideIconConverter : ValueConverterBase<string, Uri>
{ {
private const string BaseUrl = "https://static.snapgenshin.com/AvatarIcon/{0}.png"; private const string BaseUrl = "https://static.snapgenshin.com/AvatarIcon/{0}.png";
/// <summary>
/// 名称转Uri
/// </summary>
/// <param name="name">名称</param>
/// <returns>链接</returns>
public static Uri IconNameToUri(string name)
{
return new Uri(string.Format(BaseUrl, name));
}
/// <inheritdoc/> /// <inheritdoc/>
public override Uri Convert(string from) public override Uri Convert(string from)
{ {
return new Uri(string.Format(BaseUrl, from)); return IconNameToUri(from);
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -40,7 +40,6 @@ internal class GameService : IGameService
/// </summary> /// </summary>
/// <param name="scopeFactory">范围工厂</param> /// <param name="scopeFactory">范围工厂</param>
/// <param name="memoryCache">内存缓存</param> /// <param name="memoryCache">内存缓存</param>
/// <param name="gameLocators">游戏定位器集合</param>
public GameService(IServiceScopeFactory scopeFactory, IMemoryCache memoryCache) public GameService(IServiceScopeFactory scopeFactory, IMemoryCache memoryCache)
{ {
this.scopeFactory = scopeFactory; this.scopeFactory = scopeFactory;

View File

@@ -48,8 +48,10 @@
<None Remove="Resource\Icon\UI_Icon_Locked.png" /> <None Remove="Resource\Icon\UI_Icon_Locked.png" />
<None Remove="Resource\Icon\UI_Icon_None.png" /> <None Remove="Resource\Icon\UI_Icon_None.png" />
<None Remove="Resource\Icon\UI_ItemIcon_201.png" /> <None Remove="Resource\Icon\UI_ItemIcon_201.png" />
<None Remove="Resource\Icon\UI_ItemIcon_210.png" />
<None Remove="Resource\Segoe Fluent Icons.ttf" /> <None Remove="Resource\Segoe Fluent Icons.ttf" />
<None Remove="stylecop.json" /> <None Remove="stylecop.json" />
<None Remove="View\Control\BottomTextControl.xaml" />
<None Remove="View\Control\DescParamComboBox.xaml" /> <None Remove="View\Control\DescParamComboBox.xaml" />
<None Remove="View\Control\ItemIcon.xaml" /> <None Remove="View\Control\ItemIcon.xaml" />
<None Remove="View\Control\SkillPivot.xaml" /> <None Remove="View\Control\SkillPivot.xaml" />
@@ -67,6 +69,7 @@
<None Remove="View\Page\AnnouncementContentPage.xaml" /> <None Remove="View\Page\AnnouncementContentPage.xaml" />
<None Remove="View\Page\AnnouncementPage.xaml" /> <None Remove="View\Page\AnnouncementPage.xaml" />
<None Remove="View\Page\AvatarPropertyPage.xaml" /> <None Remove="View\Page\AvatarPropertyPage.xaml" />
<None Remove="View\Page\DailyNotePage.xaml" />
<None Remove="View\Page\GachaLogPage.xaml" /> <None Remove="View\Page\GachaLogPage.xaml" />
<None Remove="View\Page\HutaoDatabasePage.xaml" /> <None Remove="View\Page\HutaoDatabasePage.xaml" />
<None Remove="View\Page\LaunchGamePage.xaml" /> <None Remove="View\Page\LaunchGamePage.xaml" />
@@ -104,6 +107,7 @@
<Content Include="Resource\Icon\UI_Icon_Locked.png" /> <Content Include="Resource\Icon\UI_Icon_Locked.png" />
<Content Include="Resource\Icon\UI_Icon_None.png" /> <Content Include="Resource\Icon\UI_Icon_None.png" />
<Content Include="Resource\Icon\UI_ItemIcon_201.png" /> <Content Include="Resource\Icon\UI_ItemIcon_201.png" />
<Content Include="Resource\Icon\UI_ItemIcon_210.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -150,6 +154,16 @@
<ItemGroup> <ItemGroup>
<None Include="..\.editorconfig" Link=".editorconfig" /> <None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Page Update="View\Page\DailyNotePage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="View\Control\BottomTextControl.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup> <ItemGroup>
<Page Update="View\Dialog\GameAccountNameDialog.xaml"> <Page Update="View\Dialog\GameAccountNameDialog.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>

View File

@@ -0,0 +1,26 @@
<ContentControl
x:Class="Snap.Hutao.View.Control.BottomTextControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Border
BorderThickness="1"
CornerRadius="{StaticResource CompatCornerRadius}"
BorderBrush="{StaticResource CardStrokeColorDefault}"
Background="{StaticResource CardBackgroundFillColorDefault}">
<StackPanel>
<ContentPresenter
Name="ContentHost"/>
<TextBlock
Name="TextHost"
Margin="0,0,0,2"
TextWrapping="NoWrap"
TextTrimming="CharacterEllipsis"
MaxWidth="80"
HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</ContentControl>

View File

@@ -0,0 +1,55 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Markup;
using Snap.Hutao.Core;
namespace Snap.Hutao.View.Control;
/// <summary>
/// 底部带有文本的控件
/// </summary>
[ContentProperty(Name = nameof(TopContent))]
public sealed partial class BottomTextControl : ContentControl
{
private static readonly DependencyProperty TextProperty = Property<BottomTextControl>.Depend(nameof(Text), string.Empty, OnTextChanged);
private static readonly DependencyProperty TopContentProperty = Property<BottomTextControl>.Depend<UIElement>(nameof(TopContent), default!, OnContentChanged2);
/// <summary>
/// 构造一个新的底部带有文本的控件
/// </summary>
public BottomTextControl()
{
InitializeComponent();
}
/// <summary>
/// 顶部内容
/// </summary>
public UIElement TopContent
{
get { return (UIElement)GetValue(TopContentProperty); }
set { SetValue(TopContentProperty, value); }
}
/// <summary>
/// 文本
/// </summary>
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
private static void OnTextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs dp)
{
((BottomTextControl)sender).TextHost.Text = (string)dp.NewValue;
}
private static void OnContentChanged2(DependencyObject sender, DependencyPropertyChangedEventArgs dp)
{
((BottomTextControl)sender).ContentHost.Content = dp.NewValue;
}
}

View File

@@ -38,6 +38,11 @@
shvh:NavHelper.NavigateTo="shvp:GachaLogPage" shvh:NavHelper.NavigateTo="shvp:GachaLogPage"
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BtnIcon_Gacha.png}"/> Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BtnIcon_Gacha.png}"/>
<NavigationViewItem
Content="实时便笺"
shvh:NavHelper.NavigateTo="shvp:DailyNotePage"
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_ItemIcon_210.png}"/>
<NavigationViewItem <NavigationViewItem
Content="成就管理" Content="成就管理"
shvh:NavHelper.NavigateTo="shvp:AchievementPage" shvh:NavHelper.NavigateTo="shvp:AchievementPage"

View File

@@ -18,22 +18,22 @@
<mxi:Interaction.Behaviors> <mxi:Interaction.Behaviors>
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/> <shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
</mxi:Interaction.Behaviors> </mxi:Interaction.Behaviors>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="auto"/> <RowDefinition Height="auto"/>
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid> <Grid Background="{StaticResource CardBackgroundFillColorDefaultBrush}">
<Grid.Background>
<SolidColorBrush Color="{ThemeResource CardBackgroundFillColorSecondary}"/>
</Grid.Background>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="252"/> <ColumnDefinition Width="252"/>
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<CommandBar <CommandBar
Grid.Column="1" Grid.Column="1"
DefaultLabelPosition="Right"> DefaultLabelPosition="Right">
<CommandBar.Content> <CommandBar.Content>
<AutoSuggestBox <AutoSuggestBox
Text="{Binding SearchText,Mode=TwoWay}" Text="{Binding SearchText,Mode=TwoWay}"
@@ -57,7 +57,7 @@
<AppBarElementContainer> <AppBarElementContainer>
<ComboBox <ComboBox
MinWidth="120" MinWidth="140"
Height="36" Height="36"
Margin="2,6,3,6" Margin="2,6,3,6"
DisplayMemberPath="Name" DisplayMemberPath="Name"
@@ -138,16 +138,8 @@
<ScrollViewer Padding="0,0,16,0"> <ScrollViewer Padding="0,0,16,0">
<ItemsControl <ItemsControl
Margin="16,0,0,16" Margin="16,0,0,16"
ItemsSource="{Binding Achievements}"> ItemsSource="{Binding Achievements}"
<!--ContentThemeTransition here can make items blinking--> ItemsPanel="{StaticResource ItemsStackPanelTemplate}">
<!--<ItemsControl.Transitions>
<ContentThemeTransition/>
</ItemsControl.Transitions>-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid <Grid
@@ -194,8 +186,7 @@
VerticalAlignment="Center" VerticalAlignment="Center"
Grid.Column="0" Grid.Column="0"
Text="{Binding Time}" Text="{Binding Time}"
Visibility="{Binding IsChecked,Converter={StaticResource BoolToVisibilityConverter}}" Visibility="{Binding IsChecked,Converter={StaticResource BoolToVisibilityConverter}}"/>
/>
<Image <Image
Grid.Column="1" Grid.Column="1"
Height="32" Height="32"

View File

@@ -14,6 +14,8 @@
xmlns:shca="using:Snap.Hutao.Control.Animation" xmlns:shca="using:Snap.Hutao.Control.Animation"
xmlns:shcb="using:Snap.Hutao.Control.Behavior" xmlns:shcb="using:Snap.Hutao.Control.Behavior"
xmlns:shci="using:Snap.Hutao.Control.Image" xmlns:shci="using:Snap.Hutao.Control.Image"
xmlns:shv="using:Snap.Hutao.ViewModel"
d:DataContext="{d:DesignInstance shv:AnnouncementViewModel}"
mc:Ignorable="d" mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<mxi:Interaction.Behaviors> <mxi:Interaction.Behaviors>
@@ -28,7 +30,7 @@
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
ItemsSource="{Binding Announcement.List}" ItemsSource="{Binding Announcement.List}"
Padding="0" Padding="0"
Margin="12,12,0,-12"> Margin="16,16,0,-6">
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel> <StackPanel>
@@ -41,13 +43,9 @@
SelectionMode="None" SelectionMode="None"
DesiredWidth="300" DesiredWidth="300"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
ItemsSource="{Binding List}" ItemsSource="{Binding List}"
Margin="0,0,2,0"> Margin="0,0,2,0">
<cwucont:AdaptiveGridView.ItemContainerStyle>
<Style TargetType="GridViewItem" BasedOn="{StaticResource DefaultGridViewItemStyle}">
<Setter Property="Margin" Value="0,0,12,12"/>
</Style>
</cwucont:AdaptiveGridView.ItemContainerStyle>
<cwucont:AdaptiveGridView.ItemTemplate> <cwucont:AdaptiveGridView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <Border

View File

@@ -15,9 +15,7 @@
xmlns:shcm="using:Snap.Hutao.Control.Markup" xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shcp="using:Snap.Hutao.Control.Panel" xmlns:shcp="using:Snap.Hutao.Control.Panel"
xmlns:shct="using:Snap.Hutao.Control.Text" xmlns:shct="using:Snap.Hutao.Control.Text"
xmlns:shmmc="using:Snap.Hutao.Model.Metadata.Converter"
xmlns:shvcont="using:Snap.Hutao.View.Control" xmlns:shvcont="using:Snap.Hutao.View.Control"
xmlns:shvconv="using:Snap.Hutao.View.Converter"
xmlns:shv="using:Snap.Hutao.ViewModel" xmlns:shv="using:Snap.Hutao.ViewModel"
mc:Ignorable="d" mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
@@ -45,7 +43,7 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<CommandBar <CommandBar
DefaultLabelPosition="Right" DefaultLabelPosition="Right"
Background="{StaticResource CardBackgroundFillColorSecondary}"> Background="{StaticResource CardBackgroundFillColorSecondaryBrush}">
<CommandBar.Content> <CommandBar.Content>
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -54,7 +52,9 @@
<ColumnDefinition Width="72"/> <ColumnDefinition Width="72"/>
<ColumnDefinition Width="72"/> <ColumnDefinition Width="72"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<shcp:PanelSelector Margin="6,6,0,0" x:Name="ItemsPanelSelector"/> <shcp:PanelSelector
Margin="6,6,0,0"
x:Name="ItemsPanelSelector"/>
<StackPanel <StackPanel
Grid.Column="1" Grid.Column="1"
Margin="12,6,0,0"> Margin="12,6,0,0">
@@ -90,12 +90,12 @@
</StackPanel> </StackPanel>
</Grid> </Grid>
</CommandBar.Content> </CommandBar.Content>
<AppBarSeparator/> <AppBarSeparator/>
<AppBarButton <AppBarButton
Label="刷新" Label="刷新"
Icon="{shcm:FontIcon Glyph=&#xE72C;}" Icon="{shcm:FontIcon Glyph=&#xE72C;}"
Command="{Binding RefreshByUserGameRoleCommand}"/> Command="{Binding RefreshByUserGameRoleCommand}"/>
<AppBarButton <AppBarButton
Label="按UID查询" Label="按UID查询"
Icon="{shcm:FontIcon Glyph=&#xE721;}" Icon="{shcm:FontIcon Glyph=&#xE721;}"
@@ -236,12 +236,8 @@
CornerRadius="{StaticResource CompatCornerRadius}" CornerRadius="{StaticResource CompatCornerRadius}"
Background="{StaticResource CardBackgroundFillColorSecondary}"> Background="{StaticResource CardBackgroundFillColorSecondary}">
<ItemsControl <ItemsControl
ItemsSource="{Binding SelectedAvatar.Skills}"> ItemsSource="{Binding SelectedAvatar.Skills}"
<ItemsControl.ItemsPanel> ItemsPanel="{StaticResource HorizontalStackPanelTemplate}">
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Button <Button
@@ -450,12 +446,8 @@
SelectionMode="None" SelectionMode="None"
HorizontalAlignment="Left" HorizontalAlignment="Left"
ItemsSource="{Binding SelectedAvatar.Reliquaries}" ItemsSource="{Binding SelectedAvatar.Reliquaries}"
Margin="0,12,0,-12"> Margin="0,12,0,-12"
<cwucont:AdaptiveGridView.ItemContainerStyle> ItemContainerStyle="{StaticResource LargeGridViewItemStyle}">
<Style TargetType="GridViewItem" BasedOn="{StaticResource DefaultGridViewItemStyle}">
<Setter Property="Margin" Value="0,0,12,12"/>
</Style>
</cwucont:AdaptiveGridView.ItemContainerStyle>
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <Border

View File

@@ -0,0 +1,53 @@
<shc:ScopedPage
x:Class="Snap.Hutao.View.Page.DailyNotePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:shc="using:Snap.Hutao.Control"
xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:sc="using:SettingsUI.Controls"
xmlns:shv="using:Snap.Hutao.ViewModel"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance shv:DailyNoteViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<CommandBar
Background="{StaticResource CardBackgroundFillColorDefaultBrush}"
DefaultLabelPosition="Right">
<AppBarButton Label="添加角色" Icon="{shcm:FontIcon Glyph=&#xE710;}"/>
<AppBarButton Label="立即刷新" Icon="{shcm:FontIcon Glyph=&#xE72C;}"/>
<AppBarButton Label="通知设置" Icon="{shcm:FontIcon Glyph=&#xE713;}">
<AppBarButton.Flyout>
<Flyout>
<StackPanel>
<RadioButtons ItemsSource="{Binding RefreshTimes}">
<RadioButtons.Header>
<TextBlock Text="刷新间隔时间" Style="{StaticResource BaseTextBlockStyle}"/>
</RadioButtons.Header>
<RadioButtons.ItemTemplate>
<DataTemplate>
<TextBlock Margin="0,0,0,0" Text="{Binding Name}"/>
</DataTemplate>
</RadioButtons.ItemTemplate>
</RadioButtons>
<sc:SettingsGroup Header="通知" Margin="0,-16,0,0">
<sc:Setting
Icon="&#xEA8F;"
Header="提醒通知"
Description="防止通知自动收入操作中心">
<ToggleSwitch Margin="24,0,0,0" Style="{StaticResource ToggleSwitchSettingStyle}"/>
</sc:Setting>
</sc:SettingsGroup>
</StackPanel>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Grid>
</shc:ScopedPage>

View File

@@ -0,0 +1,22 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.ViewModel;
namespace Snap.Hutao.View.Page;
/// <summary>
/// 实时便笺页面
/// </summary>
public sealed partial class DailyNotePage : ScopedPage
{
/// <summary>
/// 构造一个新的实时便笺页面
/// </summary>
public DailyNotePage()
{
InitializeWith<DailyNoteViewModel>();
InitializeComponent();
}
}

View File

@@ -19,11 +19,6 @@
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/> <shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
</mxi:Interaction.Behaviors> </mxi:Interaction.Behaviors>
<shc:ScopedPage.Resources>
<Thickness x:Key="PivotHeaderItemMargin">8,0,8,0</Thickness>
<Thickness x:Key="PivotItemMargin">0</Thickness>
</shc:ScopedPage.Resources>
<Grid Visibility="{Binding IsInitialized,Converter={StaticResource BoolToVisibilityConverter}}"> <Grid Visibility="{Binding IsInitialized,Converter={StaticResource BoolToVisibilityConverter}}">
<Rectangle <Rectangle
Height="48" Height="48"
@@ -34,7 +29,7 @@
<ComboBox <ComboBox
MinWidth="120" MinWidth="120"
Height="36" Height="36"
Margin="16,6,12,6" Margin="16,6,0,6"
DisplayMemberPath="Uid" DisplayMemberPath="Uid"
SelectedItem="{Binding SelectedArchive,Mode=TwoWay}" SelectedItem="{Binding SelectedArchive,Mode=TwoWay}"
ItemsSource="{Binding Archives}"/> ItemsSource="{Binding Archives}"/>
@@ -44,14 +39,14 @@
<AppBarButton Label="刷新" Icon="{shcm:FontIcon Glyph=&#xE72C;}"> <AppBarButton Label="刷新" Icon="{shcm:FontIcon Glyph=&#xE72C;}">
<AppBarButton.Flyout> <AppBarButton.Flyout>
<MenuFlyout Placement="Bottom"> <MenuFlyout Placement="Bottom">
<MenuFlyoutItem
Text="从缓存刷新"
Icon="{shcm:FontIcon Glyph=&#xE81E;}"
Command="{Binding RefreshByWebCacheCommand}"/>
<MenuFlyoutItem <MenuFlyoutItem
Text="Stoken刷新" Text="Stoken刷新"
Icon="{shcm:FontIcon Glyph=&#xE192;}" Icon="{shcm:FontIcon Glyph=&#xE192;}"
Command="{Binding RefreshByStokenCommand}"/> Command="{Binding RefreshByStokenCommand}"/>
<MenuFlyoutItem
Text="从缓存刷新"
Icon="{shcm:FontIcon Glyph=&#xE81E;}"
Command="{Binding RefreshByWebCacheCommand}"/>
<MenuFlyoutItem <MenuFlyoutItem
Text="手动输入Url" Text="手动输入Url"
Icon="{shcm:FontIcon Glyph=&#xE765;}" Icon="{shcm:FontIcon Glyph=&#xE765;}"

View File

@@ -20,11 +20,6 @@
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/> <shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
</mxi:Interaction.Behaviors> </mxi:Interaction.Behaviors>
<shc:ScopedPage.Resources>
<Thickness x:Key="PivotHeaderItemMargin">8,0,8,0</Thickness>
<Thickness x:Key="PivotItemMargin">0</Thickness>
</shc:ScopedPage.Resources>
<Grid> <Grid>
<Pivot> <Pivot>
<Pivot.RightHeader> <Pivot.RightHeader>
@@ -55,25 +50,15 @@
<GridView <GridView
SelectionMode="None" SelectionMode="None"
ItemsSource="{Binding Avatars}" ItemsSource="{Binding Avatars}"
Margin="12,12,0,-12"> Margin="16,16,6,-6"
<GridView.ItemContainerStyle> ItemContainerStyle="{StaticResource LargeGridViewItemStyle}">
<Style TargetType="GridViewItem" BasedOn="{StaticResource DefaultGridViewItemStyle}">
<Setter Property="Margin" Value="0,0,12,12"/>
</Style>
</GridView.ItemContainerStyle>
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border Background="{StaticResource CardBackgroundFillColorDefault}"> <shvc:BottomTextControl Text="{Binding Rate}">
<StackPanel> <shvc:ItemIcon
<shvc:ItemIcon Icon="{Binding Icon}"
Icon="{Binding Icon}" Quality="{Binding Quality}"/>
Quality="{Binding Quality}"/> </shvc:BottomTextControl>
<TextBlock
Margin="0,0,0,2"
HorizontalAlignment="Center"
Text="{Binding Rate}"/>
</StackPanel>
</Border>
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</GridView> </GridView>
@@ -95,25 +80,15 @@
<GridView <GridView
SelectionMode="None" SelectionMode="None"
ItemsSource="{Binding Avatars}" ItemsSource="{Binding Avatars}"
Margin="12,12,0,-12"> Margin="16,16,6,-6"
<GridView.ItemContainerStyle> ItemContainerStyle="{StaticResource LargeGridViewItemStyle}">
<Style TargetType="GridViewItem" BasedOn="{StaticResource DefaultGridViewItemStyle}">
<Setter Property="Margin" Value="0,0,12,12"/>
</Style>
</GridView.ItemContainerStyle>
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border Background="{StaticResource CardBackgroundFillColorDefault}"> <shvc:BottomTextControl Text="{Binding Rate}">
<StackPanel> <shvc:ItemIcon
<shvc:ItemIcon Icon="{Binding Icon}"
Icon="{Binding Icon}" Quality="{Binding Quality}"/>
Quality="{Binding Quality}"/> </shvc:BottomTextControl>
<TextBlock
Margin="0,0,0,2"
HorizontalAlignment="Center"
Text="{Binding Rate}"/>
</StackPanel>
</Border>
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</GridView> </GridView>
@@ -128,7 +103,7 @@
<RowDefinition Height="auto"/> <RowDefinition Height="auto"/>
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid Margin="12,0,12,0"> <Grid Margin="16,0,16,0">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="48"/> <ColumnDefinition Width="48"/>
<ColumnDefinition /> <ColumnDefinition />
@@ -152,6 +127,7 @@
</Grid> </Grid>
<ScrollViewer Grid.Row="1"> <ScrollViewer Grid.Row="1">
<ItemsControl <ItemsControl
Margin="0,0,0,8"
HorizontalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"
ItemsSource="{Binding AvatarConstellationInfos}"> ItemsSource="{Binding AvatarConstellationInfos}">
<ItemsControl.ItemsPanel> <ItemsControl.ItemsPanel>
@@ -164,7 +140,7 @@
<Border <Border
Background="{StaticResource CardBackgroundFillColorDefault}" Background="{StaticResource CardBackgroundFillColorDefault}"
CornerRadius="{StaticResource CompatCornerRadius}" CornerRadius="{StaticResource CompatCornerRadius}"
Margin="12,0,12,12"> Margin="16,0,16,8">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/>

View File

@@ -34,13 +34,13 @@
<RowDefinition/> <RowDefinition/>
<RowDefinition Height="auto"/> <RowDefinition Height="auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<ScrollViewer Grid.Column="0" CanContentRenderOutsideBounds="True"> <ScrollViewer Grid.RowSpan="2">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="800"/> <ColumnDefinition MaxWidth="800"/>
<ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackPanel Margin="32,0,24,24"> <StackPanel Margin="16,-16,16,16">
<sc:SettingsGroup Header="常规" Margin="0,0,0,0"> <sc:SettingsGroup Header="常规" Margin="0,0,0,0">
<sc:Setting <sc:Setting
Icon="&#xE8AB;" Icon="&#xE8AB;"
@@ -246,15 +246,21 @@
</ScrollViewer> </ScrollViewer>
<Grid <Grid
Grid.Row="1" Grid.Row="1"
VerticalAlignment="Bottom" VerticalAlignment="Bottom">
Background="{StaticResource SystemControlAcrylicElementMediumHighBrush}">
<Button <Button
Style="{StaticResource AccentButtonStyle}"
Command="{Binding LaunchCommand}" Command="{Binding LaunchCommand}"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Grid.Column="3" Grid.Column="3"
Margin="24" Margin="24"
Width="138" MinWidth="80"
Content="启动游戏"/> Width="100"
Height="80">
<StackPanel>
<FontIcon Glyph="&#xE7FC;" FontSize="36"/>
<TextBlock Margin="0,4,0,0" Text="启动游戏"/>
</StackPanel>
</Button>
</Grid> </Grid>
</Grid> </Grid>
</shc:ScopedPage> </shc:ScopedPage>

View File

@@ -23,17 +23,22 @@
<ColumnDefinition MaxWidth="1000"/> <ColumnDefinition MaxWidth="1000"/>
<ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackPanel Margin="32,0,24,24"> <StackPanel Margin="16,-16,24,16">
<sc:SettingsGroup Header="关于 胡桃"> <sc:SettingsGroup Header="关于 胡桃">
<Grid Margin="0,4,0,16"> <Grid Margin="0,4,0,16">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/>
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Image <Border
Grid.Column="0"
Width="80" Width="80"
Source="ms-appx:///Assets/Square150x150Logo.scale-200.png"/> BorderThickness="1"
CornerRadius="{StaticResource CompatCornerRadius}"
BorderBrush="{StaticResource CardStrokeColorDefault}"
Background="{StaticResource CardBackgroundFillColorDefault}">
<Image Source="ms-appx:///Assets/Square150x150Logo.scale-200.png"/>
</Border>
<Grid <Grid
Margin="16,0,0,0" Margin="16,0,0,0"
Grid.Column="1"> Grid.Column="1">

View File

@@ -60,10 +60,6 @@
</shct:DescriptionTextBlock.Resources> </shct:DescriptionTextBlock.Resources>
</shct:DescriptionTextBlock> </shct:DescriptionTextBlock>
</DataTemplate> </DataTemplate>
<ItemsPanelTemplate x:Key="HorizontalStackPanelTemplate">
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Page.Resources> </Page.Resources>
<SplitView <SplitView
@@ -372,19 +368,13 @@
ItemsSource="{Binding Selected.Collocation.Avatars}"> ItemsSource="{Binding Selected.Collocation.Avatars}">
<GridView.ItemTemplate> <GridView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <shvc:BottomTextControl
ToolTipService.ToolTip="{Binding Name}" ToolTipService.ToolTip="{Binding Name}"
Background="{StaticResource CardBackgroundFillColorDefault}"> Text="{Binding Rate}">
<StackPanel> <shvc:ItemIcon
<shvc:ItemIcon Icon="{Binding Icon}"
Icon="{Binding Icon}" Quality="{Binding Quality}"/>
Quality="{Binding Quality}"/> </shvc:BottomTextControl>
<TextBlock
Margin="0,0,0,2"
HorizontalAlignment="Center"
Text="{Binding Rate}"/>
</StackPanel>
</Border>
</DataTemplate> </DataTemplate>
</GridView.ItemTemplate> </GridView.ItemTemplate>
</GridView> </GridView>
@@ -397,23 +387,16 @@
ItemsSource="{Binding Selected.Collocation.Weapons}"> ItemsSource="{Binding Selected.Collocation.Weapons}">
<GridView.ItemTemplate> <GridView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <shvc:BottomTextControl
ToolTipService.ToolTip="{Binding Name}" ToolTipService.ToolTip="{Binding Name}"
Background="{StaticResource CardBackgroundFillColorDefault}"> Text="{Binding Rate}">
<StackPanel> <shvc:ItemIcon
<shvc:ItemIcon Icon="{Binding Icon}"
Icon="{Binding Icon}" Quality="{Binding Quality}"/>
Quality="{Binding Quality}"/> </shvc:BottomTextControl>
<TextBlock
Margin="0,0,0,2"
HorizontalAlignment="Center"
Text="{Binding Rate}"/>
</StackPanel>
</Border>
</DataTemplate> </DataTemplate>
</GridView.ItemTemplate> </GridView.ItemTemplate>
</GridView> </GridView>
<TextBlock Text="搭配圣遗物" Style="{StaticResource BaseTextBlockStyle}" Margin="16,0,0,0"/> <TextBlock Text="搭配圣遗物" Style="{StaticResource BaseTextBlockStyle}" Margin="16,0,0,0"/>
<GridView <GridView
Margin="16,16,0,0" Margin="16,16,0,0"
@@ -423,30 +406,49 @@
ItemsSource="{Binding Selected.Collocation.ReliquarySets}"> ItemsSource="{Binding Selected.Collocation.ReliquarySets}">
<GridView.ItemTemplate> <GridView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <shvc:BottomTextControl
ToolTipService.ToolTip="{Binding Name}" ToolTipService.ToolTip="{Binding Name}"
Background="{StaticResource CardBackgroundFillColorDefault}"> Text="{Binding Rate}">
<StackPanel> <cwuc:SwitchPresenter Value="{Binding Icons.Count,Mode=OneWay}">
<Grid> <cwuc:Case IsDefault="True">
<shvc:ItemIcon Quality="QUALITY_ORANGE"/> <cwuc:Case.Value>
<ItemsControl <x:Int32>0</x:Int32>
Margin="0,0,16,0" </cwuc:Case.Value>
HorizontalAlignment="Center" <Grid>
ItemsSource="{Binding Icons}" <shvc:ItemIcon Quality="QUALITY_ORANGE"/>
ItemsPanel="{StaticResource HorizontalStackPanelTemplate}"> </Grid>
<ItemsControl.ItemTemplate> </cwuc:Case>
<DataTemplate> <cwuc:Case>
<shci:CachedImage Width="48" Margin="0,0,-16,0" Source="{Binding}"/> <cwuc:Case.Value>
</DataTemplate> <x:Int32>1</x:Int32>
</ItemsControl.ItemTemplate> </cwuc:Case.Value>
</ItemsControl> <Grid>
</Grid> <shvc:ItemIcon Quality="QUALITY_ORANGE"/>
<TextBlock <shci:CachedImage Width="80" Margin="0,0,0,0" Source="{Binding Icons[0]}"/>
Margin="0,0,0,2" </Grid>
HorizontalAlignment="Center" </cwuc:Case>
Text="{Binding Rate}"/> <cwuc:Case>
</StackPanel> <cwuc:Case.Value>
</Border> <x:Int32>2</x:Int32>
</cwuc:Case.Value>
<Grid>
<shvc:ItemIcon Quality="QUALITY_ORANGE"/>
<shci:CachedImage
Width="54"
Margin="0,4,0,0"
Source="{Binding Icons[0]}"
HorizontalAlignment="Left"
VerticalAlignment="Top"/>
<shci:CachedImage
Width="54"
Margin="0,0,0,4"
Source="{Binding Icons[1]}"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"/>
</Grid>
</cwuc:Case>
</cwuc:SwitchPresenter>
</shvc:BottomTextControl>
</DataTemplate> </DataTemplate>
</GridView.ItemTemplate> </GridView.ItemTemplate>
</GridView> </GridView>
@@ -510,59 +512,29 @@
Text="特殊料理" Text="特殊料理"
Grid.Column="0" Grid.Column="0"
Style="{StaticResource BaseTextBlockStyle}"/> Style="{StaticResource BaseTextBlockStyle}"/>
<Border <shvc:BottomTextControl
Grid.Row="1" Grid.Row="1"
Grid.Column="0" Grid.Column="0"
Margin="16,16,0,16" Margin="16,16,0,16"
CornerRadius="{StaticResource CompatCornerRadius}" Text="{Binding Selected.FetterInfo.CookBonus.Name}">
HorizontalAlignment="Left" <shvc:ItemIcon
VerticalAlignment="Top"
Background="{StaticResource CardBackgroundFillColorDefault}"
BorderThickness="1"
BorderBrush="{StaticResource CardStrokeColorDefault}">
<StackPanel>
<shvc:ItemIcon
Icon="{Binding Selected.FetterInfo.CookBonus.Icon,Converter={StaticResource ItemIconConverter}}" Icon="{Binding Selected.FetterInfo.CookBonus.Icon,Converter={StaticResource ItemIconConverter}}"
Quality="{Binding Selected.FetterInfo.CookBonus.RankLevel}"/> Quality="{Binding Selected.FetterInfo.CookBonus.RankLevel}"/>
<TextBlock </shvc:BottomTextControl>
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"
MaxWidth="80"
Margin="0,0,0,2"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Selected.FetterInfo.CookBonus.Name}"/>
</StackPanel>
</Border>
<TextBlock <TextBlock
Margin="16,16,0,0" Margin="16,16,0,0"
Text="原料理" Text="原料理"
Grid.Column="1" Grid.Column="1"
Style="{StaticResource BaseTextBlockStyle}"/> Style="{StaticResource BaseTextBlockStyle}"/>
<Border <shvc:BottomTextControl
Grid.Row="1" Grid.Row="1"
Grid.Column="1" Grid.Column="1"
Margin="16,16,0,16" Margin="16,16,0,16"
CornerRadius="{StaticResource CompatCornerRadius}" Text="{Binding Selected.FetterInfo.CookBonus.OriginName}">
HorizontalAlignment="Left" <shvc:ItemIcon
VerticalAlignment="Top"
Background="{StaticResource CardBackgroundFillColorDefault}"
BorderThickness="1"
BorderBrush="{StaticResource CardStrokeColorDefault}">
<StackPanel>
<shvc:ItemIcon
Icon="{Binding Selected.FetterInfo.CookBonus.OriginIcon,Converter={StaticResource ItemIconConverter}}" Icon="{Binding Selected.FetterInfo.CookBonus.OriginIcon,Converter={StaticResource ItemIconConverter}}"
Quality="{Binding Selected.FetterInfo.CookBonus.RankLevel}"/> Quality="{Binding Selected.FetterInfo.CookBonus.RankLevel}"/>
<TextBlock </shvc:BottomTextControl>
TextWrapping="NoWrap"
TextTrimming="CharacterEllipsis"
MaxWidth="80"
Margin="0,0,0,2"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Selected.FetterInfo.CookBonus.OriginName}"/>
</StackPanel>
</Border>
<Rectangle <Rectangle
Grid.Column="2" Grid.Column="2"
Grid.RowSpan="2" Grid.RowSpan="2"
@@ -581,30 +553,14 @@
ItemsPanel="{StaticResource HorizontalStackPanelTemplate}"> ItemsPanel="{StaticResource HorizontalStackPanelTemplate}">
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border <shvc:BottomTextControl
ToolTipService.ToolTip="{Binding Name}" ToolTipService.ToolTip="{Binding Name}"
Grid.Row="1"
Grid.Column="1"
Margin="16,16,0,16" Margin="16,16,0,16"
CornerRadius="{StaticResource CompatCornerRadius}" Text="{Binding Count}">
HorizontalAlignment="Left" <shvc:ItemIcon
VerticalAlignment="Top" Icon="{Binding Icon,Converter={StaticResource ItemIconConverter}}"
Background="{StaticResource CardBackgroundFillColorDefault}" Quality="{Binding RankLevel}"/>
BorderThickness="1" </shvc:BottomTextControl>
BorderBrush="{StaticResource CardStrokeColorDefault}">
<StackPanel>
<shvc:ItemIcon
Icon="{Binding Icon,Converter={StaticResource ItemIconConverter}}"
Quality="{Binding RankLevel}"/>
<TextBlock
TextTrimming="CharacterEllipsis"
MaxWidth="80"
Margin="0,0,0,2"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Count}"/>
</StackPanel>
</Border>
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</ItemsControl> </ItemsControl>

View File

@@ -0,0 +1,32 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.ComponentModel;
using Snap.Hutao.Control;
using Snap.Hutao.Model;
namespace Snap.Hutao.ViewModel;
/// <summary>
/// 实时便笺视图模型
/// </summary>
[Injection(InjectAs.Scoped)]
internal class DailyNoteViewModel : ObservableObject, ISupportCancellation
{
private readonly List<NamedValue<int>> refreshTimes = new()
{
new("4 分钟 | 0.5 树脂", 240),
new("8 分钟 | 1 树脂", 480),
new("30 分钟 | 3.75 树脂", 1800),
new("40 分钟 | 5 树脂", 2400),
new("60 分钟 | 7.5 树脂", 3600),
};
/// <inheritdoc/>
public CancellationToken CancellationToken { get; set; }
/// <summary>
/// 刷新时间
/// </summary>
public List<NamedValue<int>> RefreshTimes { get => refreshTimes; }
}

View File

@@ -68,6 +68,11 @@ public enum KnownReturnCode : int
/// </summary> /// </summary>
NotDefined = 7, NotDefined = 7,
/// <summary>
/// 账号有风险
/// </summary>
CODE1034 = 1034,
/// <summary> /// <summary>
/// 数据未公开 /// 数据未公开
/// </summary> /// </summary>