use different icon for different state

This commit is contained in:
qhy040404
2024-04-30 00:04:26 +08:00
parent c8592c798b
commit 47e451df2f
5 changed files with 37 additions and 68 deletions

View File

@@ -20,6 +20,8 @@
<!-- Mark -->
<x:String x:Key="UI_MarkQuest_Events_Proce">https://api.snapgenshin.com/static/raw/Mark/UI_MarkQuest_Events_Proce.png</x:String>
<x:String x:Key="UI_MarkQuest_Events_Start">https://api.snapgenshin.com/static/raw/Mark/UI_MarkQuest_Events_Start.png</x:String>
<x:String x:Key="UI_MarkQuest_Main_Proce">https://api.snapgenshin.com/static/raw/Mark/UI_MarkQuest_Main_Proce.png</x:String>
<x:String x:Key="UI_MarkQuest_Main_Start">https://api.snapgenshin.com/static/raw/Mark/UI_MarkQuest_Main_Start.png</x:String>
<x:String x:Key="UI_MarkTower">https://api.snapgenshin.com/static/raw/Mark/UI_MarkTower.png</x:String>

View File

@@ -96,7 +96,7 @@ internal sealed class DailyNoteEntry : ObservableObject, IMappingFrom<DailyNoteE
return $"{quest.ChapterNum} {quest.ChapterTitle}";
}
return string.Empty;
return SH.WebDailyNoteArchonQuestChapterFinished;
}
}

View File

@@ -3044,6 +3044,9 @@
<data name="WebBridgeShareCopyToClipboardSuccess" xml:space="preserve">
<value>已复制到剪贴板</value>
</data>
<data name="WebDailyNoteArchonQuestChapterFinished" xml:space="preserve">
<value>所有魔神任务已完成</value>
</data>
<data name="WebDailyNoteArchonQuestStatusFinished" xml:space="preserve">
<value>全部完成</value>
</data>

View File

@@ -3,7 +3,8 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cw="using:CommunityToolkit.WinUI"
xmlns:cwc="using:CommunityToolkit.WinUI.Controls"
xmlns:cwcont="using:CommunityToolkit.WinUI.Controls"
xmlns:cwconv="using:CommunityToolkit.WinUI.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mxi="using:Microsoft.Xaml.Interactivity"
@@ -26,6 +27,17 @@
<Page.Resources>
<shc:BindingProxy x:Key="ViewModelBindingProxy" DataContext="{Binding}"/>
<cwconv:BoolToObjectConverter
x:Name="DailyTaskIconConverter"
FalseValue="{StaticResource UI_MarkQuest_Events_Start}"
TrueValue="{StaticResource UI_MarkQuest_Events_Proce}"/>
<cwconv:DoubleToObjectConverter
x:Name="ArchonQuestIconConverter"
FalseValue="{StaticResource UI_MarkQuest_Main_Proce}"
GreaterThan="0"
TrueValue="{StaticResource UI_MarkQuest_Main_Start}"/>
<DataTemplate x:Key="UserAndUidTemplate">
<Grid Padding="0,0,0,16">
<TextBlock VerticalAlignment="Center" Text="{Binding Uid}"/>
@@ -127,7 +139,7 @@
Margin="4"
VerticalAlignment="Center"
shch:FrameworkElementHelper.SquareLength="32"
Source="{StaticResource UI_MarkQuest_Main_Start}"/>
Source="{Binding DailyNote.ArchonQuestProgress.List.Count, Converter={StaticResource ArchonQuestIconConverter}}"/>
<StackPanel
Grid.Column="1"
Margin="8,0,0,0"
@@ -239,7 +251,7 @@
Margin="4"
VerticalAlignment="Center"
shch:FrameworkElementHelper.SquareLength="32"
Source="{StaticResource UI_MarkQuest_Events_Proce}"/>
Source="{Binding DailyNote.DailyTask.IsExtraTaskRewardReceived, Converter={StaticResource DailyTaskIconConverter}}"/>
<StackPanel
Grid.Column="1"
Margin="8,0,0,0"
@@ -370,7 +382,7 @@
ItemsSource="{Binding DailyNote.Expeditions, Mode=OneWay}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid
<cwcont:UniformGrid
ColumnSpacing="8"
Columns="2"
RowSpacing="8"/>
@@ -487,16 +499,16 @@
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
</StackPanel.Resources>
<cwc:HeaderedContentControl
<cwcont:HeaderedContentControl
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
IsEnabled="{Binding RuntimeOptions.IsElevated, Converter={StaticResource BoolNegationConverter}}">
<cwc:HeaderedContentControl.Header>
<cwcont:HeaderedContentControl.Header>
<TextBlock
Margin="1,0,0,5"
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageDailyNoteSettingRefreshHeader}"/>
</cwc:HeaderedContentControl.Header>
</cwcont:HeaderedContentControl.Header>
<StackPanel Spacing="{StaticResource SettingsCardSpacing}">
<InfoBar
Title="{shcm:ResourceString Name=ViewPageDailyNoteSettingRefreshElevatedHint}"
@@ -504,12 +516,12 @@
IsOpen="True"
Severity="Warning"
Visibility="{Binding RuntimeOptions.IsElevated, Converter={StaticResource BoolToVisibilityConverter}}"/>
<cwc:SettingsCard
<cwcont:SettingsCard
Description="{shcm:ResourceString Name=ViewPageDailyNoteSettingAutoRefreshDescription}"
Header="{shcm:ResourceString Name=ViewPageDailyNoteSettingAutoRefresh}"
HeaderIcon="{shcm:FontIcon Glyph=&#xE72C;}">
<ToggleSwitch Margin="24,0,0,0" IsOn="{Binding DailyNoteOptions.IsAutoRefreshEnabled, Mode=TwoWay}"/>
</cwc:SettingsCard>
</cwcont:SettingsCard>
<RadioButtons
Margin="1,11,0,5"
IsEnabled="{Binding DailyNoteOptions.IsAutoRefreshEnabled}"
@@ -525,15 +537,15 @@
</RadioButtons.ItemTemplate>
</RadioButtons>
</StackPanel>
</cwc:HeaderedContentControl>
</cwcont:HeaderedContentControl>
<cwc:HeaderedContentControl
<cwcont:HeaderedContentControl
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
IsEnabled="{Binding RuntimeOptions.IsToastAvailable}">
<cwc:HeaderedContentControl.Header>
<cwcont:HeaderedContentControl.Header>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageDailyNoteNotificationHeader}"/>
</cwc:HeaderedContentControl.Header>
</cwcont:HeaderedContentControl.Header>
<StackPanel Spacing="{StaticResource SettingsCardSpacing}">
<InfoBar
Title="胡桃的通知权限已被关闭"
@@ -541,23 +553,23 @@
IsOpen="True"
Severity="Warning"
Visibility="{Binding RuntimeOptions.IsToastAvailable, Converter={StaticResource BoolToVisibilityRevertConverter}}"/>
<cwc:SettingsCard
<cwcont:SettingsCard
Description="{shcm:ResourceString Name=ViewPageDailyNoteSlientModeDescription}"
Header="{shcm:ResourceString Name=ViewPageDailyNoteSlientModeHeader}"
HeaderIcon="{shcm:FontIcon Glyph=&#xE7ED;}">
<ToggleSwitch Margin="24,0,0,0" IsOn="{Binding DailyNoteOptions.IsSilentWhenPlayingGame, Mode=TwoWay}"/>
</cwc:SettingsCard>
<cwc:SettingsCard
</cwcont:SettingsCard>
<cwcont:SettingsCard
Description="{shcm:ResourceString Name=ViewPageDailyNoteReminderDescription}"
Header="{shcm:ResourceString Name=ViewPageDailyNoteReminderHeader}"
HeaderIcon="{shcm:FontIcon Glyph=&#xEA8F;}">
<ToggleSwitch Margin="24,0,0,0" IsOn="{Binding DailyNoteOptions.IsReminderNotification, Mode=TwoWay}"/>
</cwc:SettingsCard>
</cwcont:SettingsCard>
</StackPanel>
</cwc:HeaderedContentControl>
</cwcont:HeaderedContentControl>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageDailyNoteDataInteropHeader}"/>
<cwc:SettingsCard
<cwcont:SettingsCard
Command="{Binding ConfigDailyNoteWebhookUrlCommand}"
Description="{shcm:ResourceString Name=ViewPageDailyNoteConfigWebhookDescription}"
Header="{shcm:ResourceString Name=ViewPageDailyNoteConfigWebhookHeader}"

View File

@@ -5,57 +5,9 @@ namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.DailyNote;
internal sealed class ArchonQuestProgress
{
public List<uint> ArchonQuestIds { get; } = [
1001U, 1002U, 1003U,
1101U, 1102U, 1103U, 1104U,
1201U, 1202U, 1203U, 1204U, 1205U, 1206U, 1207U,
1301U, 1302U, 1303U, 1304U, 1305U, 1306U, 1307U, 1308U,
1401U, 1402U, 1403U, 1404U, 1405U
];
[JsonPropertyName("list")]
public List<ArchonQuest> List { get; set; } = default!;
public int ArchonQuestStatusValue
{
get
{
if (List.IsNullOrEmpty())
{
return ArchonQuestIds.Count;
}
return ArchonQuestIds.IndexOf(List.Single().Id);
}
}
public string ArchonQuestStatusFormatted
{
get
{
if (List.IsNullOrEmpty())
{
return SH.WebDailyNoteArchonQuestStatusFinished;
}
return List.Single().Status.GetLocalizedDescription();
}
}
public string ArchonQuestChapterFormatted
{
get
{
if (List.IsNullOrEmpty())
{
return string.Empty;
}
ArchonQuest quest = List.Single();
return $"{quest.ChapterNum} {quest.ChapterTitle}";
}
}
[JsonPropertyName("is_open_archon_quest")]
public bool IsOpenArchonQuest { get; set; }