feat: date format language based (#10424)

c479834d38
This commit is contained in:
uye
2024-09-06 00:08:33 +08:00
committed by GitHub
20 changed files with 300 additions and 58 deletions

View File

@@ -34,6 +34,9 @@ body:
Resource Version:
UI Version:
Core Version:
Resource Version:
MAA Version:
validations:
required: true
- type: textarea

View File

@@ -38,6 +38,10 @@ body:
UI Version:
Core Version:
MuMu 版本号:
Resource Version:
MAA Version:
MuMu 版本号:
validations:
required: true
- type: textarea

View File

@@ -48,6 +48,9 @@ body:
Resource Version:
UI Version:
Core Version:
OR
Resource Version:
MAA Version:
validations:
required: true
- type: textarea

View File

@@ -52,6 +52,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ehem/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=esource/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Favourite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=filetime/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=findstr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLASHW/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLASHWINFO/@EntryIndexedValue">True</s:Boolean>

View File

@@ -52,6 +52,7 @@ namespace MaaWpfGui.Constants
public const string Cheers = "GUI.Cheers";
public const string Hangover = "GUI.Hangover";
public const string LastBuyWineTime = "GUI.LastBuyWineTime";
public const string CustomCulture = "GUI.CustomCulture";
public const string AddressHistory = "Connect.AddressHistory";
public const string AutoDetect = "Connect.AutoDetect";

View File

@@ -11,9 +11,11 @@
// but WITHOUT ANY WARRANTY
// </copyright>
#nullable enable
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using MaaWpfGui.Constants;
using MaaWpfGui.Helper;
@@ -25,7 +27,7 @@ namespace MaaWpfGui.Extensions
private static string ClientType => ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty);
private static readonly Dictionary<string, int> _clientTypeTimezone = new Dictionary<string, int>
private static readonly Dictionary<string, int> _clientTypeTimezone = new()
{
{ string.Empty, 8 },
{ "Official", 8 },
@@ -56,6 +58,15 @@ namespace MaaWpfGui.Extensions
return dt is { Month: 4, Day: 1 };
}
public static CultureInfo CustomCultureInfo => LocalizationHelper.CustomCultureInfo;
public static string ToLocalTimeString(this DateTime dt, string? format = null)
{
return string.IsNullOrEmpty(format)
? dt.ToLocalTime().ToString($"{CustomCultureInfo.DateTimeFormat.ShortDatePattern} HH:mm:ss", CustomCultureInfo)
: dt.ToLocalTime().ToString(format, CustomCultureInfo);
}
public static DateTime ToDateTime(this System.Runtime.InteropServices.ComTypes.FILETIME filetime)
{
return DateTime.FromFileTime(((long)filetime.dwHighDateTime << 32) | (uint)filetime.dwLowDateTime);

View File

@@ -70,6 +70,24 @@ namespace MaaWpfGui.Helper
private static readonly string _culture = ConfigurationHelper.GetValue(ConfigurationKeys.Localization, DefaultLanguage);
private static readonly string _customCulture = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.CustomCulture, string.Empty);
public static CultureInfo CustomCultureInfo
{
get
{
if (string.IsNullOrEmpty(_customCulture))
{
return CultureInfo.CurrentCulture;
}
return CultureInfo.GetCultures(CultureTypes.AllCultures)
.Any(c => c.Name.Equals(_customCulture, StringComparison.OrdinalIgnoreCase))
? new CultureInfo(_customCulture)
: CultureInfo.CurrentCulture;
}
}
/// <summary>
/// Loads localizations.
/// </summary>
@@ -114,7 +132,9 @@ namespace MaaWpfGui.Helper
try
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(_culture);
Thread.CurrentThread.CurrentCulture = !string.IsNullOrEmpty(_customCulture)
? CustomCultureInfo
: CultureInfo.GetCultureInfo(_culture);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name)));
}
catch

View File

@@ -42,6 +42,12 @@
<InformationalVersion>0.0.1</InformationalVersion>
</PropertyGroup>
<ItemGroup>
<AssemblyAttribute Include="MaaWpfGui.Properties.BuildDateTime">
<_Parameter1>$([System.DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ss"))</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
<!-- Info -->
<PropertyGroup>
<ApplicationIcon>newlogo.ico</ApplicationIcon>

View File

@@ -0,0 +1,25 @@
// <copyright file="BuildDateTimeAttribute.cs" company="MaaAssistantArknights">
// MaaWpfGui - A part of the MaaCoreArknights project
// Copyright (C) 2021 MistEO and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License v3.0 only as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY
// </copyright>
using System;
namespace MaaWpfGui.Properties
{
[AttributeUsage(AttributeTargets.Assembly)]
public class BuildDateTimeAttribute(string date) : Attribute
{
private const string DateFormat = "yyyy-MM-ddTHH:mm:ss";
public DateTime BuildDateTime { get; } = DateTime.ParseExact(date, DateFormat, null);
}
}

View File

@@ -18,9 +18,12 @@
<system:String x:Key="HotKeySettings">HotKeys</system:String>
<system:String x:Key="UpdateSettings">Update</system:String>
<system:String x:Key="AboutUs">About us</system:String>
<system:String x:Key="MaaVersion">MAA Version</system:String>
<system:String x:Key="BuildDateTime">Build Date</system:String>
<system:String x:Key="CoreVersion">Core Version</system:String>
<system:String x:Key="UiVersion">UI Version</system:String>
<system:String x:Key="ResourceVersion">Resource Version</system:String>
<system:String x:Key="ResourceDateTime">Resource Date</system:String>
<system:String x:Key="Off">Off</system:String>
<system:String x:Key="ExternalNotificationTips">Please note: The external notification feature currently only sends 「All tasks completed」 notifications.</system:String>
<system:String x:Key="ExternalNotificationSettings">External notifications</system:String>

View File

@@ -18,9 +18,12 @@
<system:String x:Key="HotKeySettings">ホットキー設定</system:String>
<system:String x:Key="UpdateSettings">アップデート設定</system:String>
<system:String x:Key="AboutUs">About us</system:String>
<system:String x:Key="MaaVersion">MAA バージョン</system:String>
<system:String x:Key="BuildDateTime">ビルド日付</system:String>
<system:String x:Key="CoreVersion">Core バージョン</system:String>
<system:String x:Key="UiVersion">UI バージョン</system:String>
<system:String x:Key="ResourceVersion">リソースバーション</system:String>
<system:String x:Key="ResourceDateTime">リソース日付</system:String>
<system:String x:Key="Off">シャットダウン</system:String>
<system:String x:Key="ExternalNotificationTips">注:外部通知機能は現在、「すべてのタスクが完了しました」という通知のみを送信します。</system:String>
<system:String x:Key="ExternalNotificationSettings">外部通知</system:String>
@@ -219,7 +222,7 @@
4. 内部テスト版の更新方法を非開発ユーザーに共有しないでください。不要な混乱とリスクを避けるためです。
設定 - About us - フィードバックのリンクをクリックして、このポップアップをキャンセルできます。ご理解とご協力をお願いいたします!</system:String>
<system:String x:Key="UpdateCheck">Update version</system:String>
<system:String x:Key="UpdateCheck">更新バージョン</system:String>
<system:String x:Key="DownloadWithAria2">aria2を使う</system:String>
<system:String x:Key="UpdateCheckNow">アップデートを確認する</system:String>
<system:String x:Key="ShowChangelog">変更履歴</system:String>

View File

@@ -18,9 +18,12 @@
<system:String x:Key="HotKeySettings">단축키 설정</system:String>
<system:String x:Key="UpdateSettings">업데이트</system:String>
<system:String x:Key="AboutUs">정보</system:String>
<system:String x:Key="MaaVersion">MAA 버전</system:String>
<system:String x:Key="BuildDateTime">빌드 날짜</system:String>
<system:String x:Key="CoreVersion">Core 버전</system:String>
<system:String x:Key="UiVersion">UI 버전</system:String>
<system:String x:Key="ResourceVersion">Resource 버전</system:String>
<system:String x:Key="ResourceDateTime">자원 날짜</system:String>
<system:String x:Key="Off">끄기</system:String>
<system:String x:Key="ExternalNotificationTips">팁: 외부 알림 기능은 현재 「모든 작업 완료」 알림만 보냅니다.</system:String>
<system:String x:Key="ExternalNotificationSettings">외부 알림</system:String>

View File

@@ -18,9 +18,12 @@
<system:String x:Key="HotKeySettings">热键设置</system:String>
<system:String x:Key="UpdateSettings">软件更新</system:String>
<system:String x:Key="AboutUs">关于我们</system:String>
<system:String x:Key="MaaVersion">MAA 版本</system:String>
<system:String x:Key="BuildDateTime">构建日期</system:String>
<system:String x:Key="CoreVersion">核心版本</system:String>
<system:String x:Key="UiVersion">界面版本</system:String>
<system:String x:Key="ResourceVersion">资源版本</system:String>
<system:String x:Key="ResourceDateTime">资源日期</system:String>
<system:String x:Key="Off">关闭</system:String>
<system:String x:Key="ExternalNotificationTips">请注意:外部通知功能目前仅会发送“所有任务完成”的通知。</system:String>
<system:String x:Key="ExternalNotificationSettings">外部通知</system:String>

View File

@@ -18,9 +18,12 @@
<system:String x:Key="HotKeySettings">熱鍵設定</system:String>
<system:String x:Key="UpdateSettings">軟體更新</system:String>
<system:String x:Key="AboutUs">關於我們</system:String>
<system:String x:Key="CoreVersion">Core 版本</system:String>
<system:String x:Key="UiVersion">UI 版本號</system:String>
<system:String x:Key="ResourceVersion">資源版本</system:String>
<system:String x:Key="MaaVersion">MAA 版本</system:String>
<system:String x:Key="BuildDateTime">構建日期</system:String>
<system:String x:Key="CoreVersion">Core 版本</system:String>
<system:String x:Key="UiVersion">UI 版本</system:String>
<system:String x:Key="ResourceVersion">資源版本</system:String>
<system:String x:Key="ResourceDateTime">資源日期</system:String>
<system:String x:Key="Off">關閉</system:String>
<system:String x:Key="ExternalNotificationTips">請注意:外部通知功能目前僅會發送「所有任務完成」 的通知。</system:String>
<system:String x:Key="ExternalNotificationSettings">外部通知</system:String>

View File

@@ -619,10 +619,6 @@ namespace MaaWpfGui.Services.RemoteControl
/*await Task.Run(() => Instances.SettingsViewModel.RunScript("StartsWithScript"));*/
Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ConnectingToEmulator"));
if (!Instances.SettingsViewModel.AdbReplaced && !Instances.SettingsViewModel.IsAdbTouchMode())
{
Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info);
}
// 一般是点了“停止”按钮了
if (Instances.TaskQueueViewModel.Stopping)

View File

@@ -1027,10 +1027,6 @@ namespace MaaWpfGui.ViewModels.UI
}
AddLog(LocalizationHelper.GetString("ConnectingToEmulator"));
if (!Instances.SettingsViewModel.AdbReplaced && !Instances.SettingsViewModel.IsAdbTouchMode())
{
AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info);
}
string errMsg = string.Empty;
_caught = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg));

View File

@@ -33,13 +33,13 @@ using System.Windows.Controls;
using System.Windows.Media.Imaging;
using HandyControl.Controls;
using HandyControl.Data;
using HandyControl.Tools.Extension;
using MaaWpfGui.Configuration;
using MaaWpfGui.Constants;
using MaaWpfGui.Extensions;
using MaaWpfGui.Helper;
using MaaWpfGui.Main;
using MaaWpfGui.Models;
using MaaWpfGui.Properties;
using MaaWpfGui.Services;
using MaaWpfGui.Services.HotKeys;
using MaaWpfGui.Services.Notification;
@@ -1484,7 +1484,9 @@ namespace MaaWpfGui.ViewModels.UI
{
SetAndNotify(ref _clientType, value);
ConfigurationHelper.SetValue(ConfigurationKeys.ClientType, value);
ResourceVersion = GetResourceVersionByClientType(_clientType);
_resourceInfo = GetResourceVersionByClientType(_clientType);
ResourceVersion = _resourceInfo.VersionName;
ResourceDateTime = _resourceInfo.DateTime;
UpdateWindowTitle(); // 每次修改客户端时更新WindowTitle
Instances.TaskQueueViewModel.UpdateStageList(true);
Instances.TaskQueueViewModel.UpdateDatePrompt();
@@ -3627,6 +3629,8 @@ namespace MaaWpfGui.ViewModels.UI
/// </summary>
public static string CoreVersion { get; } = Marshal.PtrToStringAnsi(MaaService.AsstGetVersion()) ?? "0.0.1";
public static string CoreVersionDisplay => string.Join("\u200B", CoreVersion.ToCharArray());
private static readonly string _uiVersion = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion.Split('+')[0] ?? "0.0.1";
/// <summary>
@@ -3634,7 +3638,15 @@ namespace MaaWpfGui.ViewModels.UI
/// </summary>
public static string UiVersion { get; } = _uiVersion == "0.0.1" ? "DEBUG VERSION" : _uiVersion;
private static string _resourceVersion = GetResourceVersionByClientType(ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty));
public static string UiVersionDisplay => string.Join("\u200B", UiVersion.ToCharArray());
public static DateTime BuildDateTime { get; } = Assembly.GetExecutingAssembly().GetCustomAttribute<BuildDateTimeAttribute>()?.BuildDateTime ?? DateTime.MinValue;
public static string BuildDateTimeCurrentCultureString => BuildDateTime.ToLocalTimeString();
private static (DateTime DateTime, string VersionName) _resourceInfo = GetResourceVersionByClientType(ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty));
private static string _resourceVersion = _resourceInfo.VersionName;
/// <summary>
/// Gets or sets the resource version.
@@ -3645,7 +3657,17 @@ namespace MaaWpfGui.ViewModels.UI
set => SetAndNotify(ref _resourceVersion, value);
}
private static string GetResourceVersionByClientType(string clientType)
private static DateTime _resourceDateTime = _resourceInfo.DateTime;
public DateTime ResourceDateTime
{
get => _resourceDateTime;
set => SetAndNotify(ref _resourceDateTime, value);
}
public string ResourceDateTimeCurrentCultureString => ResourceDateTime.ToLocalTimeString();
private static (DateTime DateTime, string VersionName) GetResourceVersionByClientType(string clientType)
{
const string OfficialClientType = "Official";
const string BilibiliClientType = "Bilibili";
@@ -3655,10 +3677,10 @@ namespace MaaWpfGui.ViewModels.UI
jsonPath = $"resource/global/{clientType}/resource/version.json";
}
string versionName = string.Empty;
string versionName;
if (!File.Exists(jsonPath))
{
return versionName;
return (DateTime.MinValue, string.Empty);
}
var versionJson = (JObject?)JsonConvert.DeserializeObject(File.ReadAllText(jsonPath));
@@ -3666,11 +3688,9 @@ namespace MaaWpfGui.ViewModels.UI
var poolTime = (ulong?)versionJson?["gacha"]?["time"]; // 卡池的开始时间
var activityTime = (ulong?)versionJson?["activity"]?["time"]; // 活动的开始时间
var lastUpdated = (string?)versionJson?["last_updated"]; // 最后更新时间
string dateOnly = string.Empty;
if (DateTime.TryParse(lastUpdated, out DateTime parsedDateTime))
{
dateOnly = parsedDateTime.ToString("yy.MM.dd");
}
var dateTime = lastUpdated == null
? DateTime.MinValue
: DateTime.ParseExact(lastUpdated, "yyyy-MM-dd HH:mm:ss.fff", null);
if ((currentTime < poolTime) && (currentTime < activityTime))
{
@@ -3693,7 +3713,7 @@ namespace MaaWpfGui.ViewModels.UI
versionName = versionJson?["activity"]?["name"]?.ToString() ?? string.Empty;
}
return versionName + dateOnly;
return (dateTime, versionName);
}
private UpdateVersionType _versionType = (UpdateVersionType)Enum.Parse(
@@ -4611,7 +4631,14 @@ namespace MaaWpfGui.ViewModels.UI
}
}
string resourceVersion = !string.IsNullOrEmpty(ResourceVersion) ? $" - {ResourceVersion}" : string.Empty;
string resourceVersion = !string.IsNullOrEmpty(ResourceVersion)
? LocalizationHelper.CustomCultureInfo.Name.ToLowerInvariant() switch
{
"zh-cn" => $" - {ResourceVersion}{ResourceDateTime:#MMdd}",
"zh-tw" => $" - {ResourceVersion}{ResourceDateTime:#MMdd}",
_ => $" - {ResourceDateTime.ToString(LocalizationHelper.CustomCultureInfo.DateTimeFormat.ShortDatePattern.Replace("yyyy", string.Empty).Trim('/', '.'))} {ResourceVersion}",
}
: string.Empty;
rvm.WindowTitle = $"{prefix}MAA{currentConfiguration} - {CoreVersion}{resourceVersion}{connectConfigName}{connectAddress}{clientName}";
}

View File

@@ -1051,22 +1051,31 @@ namespace MaaWpfGui.ViewModels.UI
ClearLog();
var buildDateTimeLong = SettingsViewModel.BuildDateTimeCurrentCultureString;
var resourceDateTimeLong = Instances.SettingsViewModel.ResourceDateTimeCurrentCultureString;
AddLog($"Build Time:\n{buildDateTimeLong}\nResource Time:\n{resourceDateTimeLong}");
var uiVersion = SettingsViewModel.UiVersion;
var coreVersion = SettingsViewModel.CoreVersion;
if (uiVersion != coreVersion &&
Instances.VersionUpdateViewModel.IsStdVersion(uiVersion) &&
Instances.VersionUpdateViewModel.IsStdVersion(coreVersion))
{
AddLog(string.Format(LocalizationHelper.GetString("VersionMismatch"), uiVersion, coreVersion), UiLogColor.Warning);
AddLog(string.Format(LocalizationHelper.GetString("VersionMismatch"), uiVersion, coreVersion), UiLogColor.Error);
return;
}
await Task.Run(() => Instances.SettingsViewModel.RunScript("StartsWithScript"));
AddLog(LocalizationHelper.GetString("ConnectingToEmulator"));
/*
// 现在的主流模拟器都已经更新过自带的 adb 了,不再需要替换
if (!Instances.SettingsViewModel.AdbReplaced && !Instances.SettingsViewModel.IsAdbTouchMode())
{
AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info);
}
*/
// 一般是点了“停止”按钮了
if (Stopping)
@@ -1277,10 +1286,14 @@ namespace MaaWpfGui.ViewModels.UI
await Task.Run(() => Instances.SettingsViewModel.RunScript("StartsWithScript"));
AddLog(LocalizationHelper.GetString("ConnectingToEmulator"));
/*
// 现在的主流模拟器都已经更新过自带的 adb 了,不再需要替换
if (!Instances.SettingsViewModel.AdbReplaced && !Instances.SettingsViewModel.IsAdbTouchMode())
{
AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info);
}
*/
// 一般是点了“停止”按钮了
if (Stopping)

View File

@@ -14,7 +14,6 @@
xmlns:viewModels="clr-namespace:MaaWpfGui.ViewModels"
xmlns:vm="clr-namespace:MaaWpfGui"
d:DataContext="{d:DesignInstance {x:Type ui:SettingsViewModel}}"
d:DesignHeight="300"
d:DesignWidth="550"
mc:Ignorable="d">
<StackPanel>
@@ -26,7 +25,7 @@
TextAlignment="Center" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
@@ -60,19 +59,16 @@
VerticalAlignment="Center"
Content="{DynamicResource AutoInstallUpdatePackage}"
IsChecked="{Binding AutoInstallUpdatePackage}" />
<StackPanel VerticalAlignment="Center" Orientation="Horizontal">
<controls:TextBlock
Margin="10,10,0,10"
Block.TextAlignment="Center"
Text="{DynamicResource UpdateCheck}" />
<ComboBox
Width="120"
Margin="10"
DisplayMemberPath="Display"
ItemsSource="{Binding VersionTypeList}"
SelectedValue="{Binding VersionType}"
SelectedValuePath="Value" />
</StackPanel>
<hc:ComboBox
Width="150"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Center"
hc:TitleElement.Title="{DynamicResource UpdateCheck}"
DisplayMemberPath="Display"
ItemsSource="{Binding VersionTypeList}"
SelectedValue="{Binding VersionType}"
SelectedValuePath="Value" />
</StackPanel>
</StackPanel>
<StackPanel
@@ -118,25 +114,64 @@
<TextBlock
MaxWidth="150"
Margin="0,3,0,3"
d:MinWidth="50"
Foreground="White"
Text="{Binding ResourceVersion, Mode=OneWay}"
TextWrapping="Wrap" />
</hc:Shield>
<Grid HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Grid.Column="0"
Margin="0,5,0,5"
Background="#555555"
CornerRadius="3,0,0,3">
CornerRadius="3,0,0,3"
Visibility="{c:Binding 'UiVersion == CoreVersion'}">
<TextBlock
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding UiVersion}"
Foreground="White"
PreviewMouseDown="MaaVersionClick"
Text="{DynamicResource MaaVersion}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="0"
Grid.Column="1"
Margin="0,5,0,5"
Background="#6969AA"
CornerRadius="0,3,3,0"
Visibility="{c:Binding 'UiVersion == CoreVersion'}">
<TextBlock
MinWidth="50"
MaxWidth="400"
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding UiVersion}"
Foreground="White"
PreviewMouseDown="MaaVersionClick"
Text="{Binding UiVersionDisplay, Mode=OneWay}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="1"
Grid.Column="0"
Margin="0,5,0,5"
Background="#555555"
CornerRadius="3,0,0,3"
Visibility="{c:Binding 'UiVersion != CoreVersion'}">
<TextBlock
Padding="5,3,5,3"
HorizontalAlignment="Center"
@@ -147,6 +182,87 @@
Text="{DynamicResource UiVersion}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="1"
Grid.Column="1"
Margin="0,5,0,5"
Background="#6969AA"
CornerRadius="0,3,3,0"
Visibility="{c:Binding 'UiVersion != CoreVersion'}">
<TextBlock
MinWidth="50"
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding UiVersion}"
Foreground="White"
PreviewMouseDown="UiVersionClick"
Text="{Binding UiVersionDisplay, Mode=OneWay}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="2"
Grid.Column="0"
Margin="0,5,0,5"
Background="#555555"
CornerRadius="3,0,0,3"
Visibility="{c:Binding 'UiVersion != CoreVersion'}">
<TextBlock
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding CoreVersion}"
Foreground="White"
PreviewMouseDown="CoreVersionClick"
Text="{DynamicResource CoreVersion}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="2"
Grid.Column="1"
Margin="0,5,0,5"
Background="#6969AA"
CornerRadius="0,3,3,0"
Visibility="{c:Binding 'UiVersion != CoreVersion'}">
<TextBlock
MinWidth="50"
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding CoreVersion}"
Foreground="White"
PreviewMouseDown="CoreVersionClick"
Text="{Binding CoreVersionDisplay, Mode=OneWay}"
TextWrapping="Wrap" />
</Border>
</Grid>
<Grid HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Grid.Column="0"
Margin="0,5,0,5"
Background="#555555"
CornerRadius="3,0,0,3">
<TextBlock
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding ResourceDateTimeCurrentCultureString}"
Foreground="White"
PreviewMouseDown="ResourceVersionClick"
Text="{DynamicResource ResourceDateTime}"
TextWrapping="Wrap" />
</Border>
<Border
Grid.Row="0"
Grid.Column="1"
@@ -156,12 +272,12 @@
<TextBlock
MinWidth="50"
Padding="5,3,5,3"
HorizontalAlignment="Left"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding UiVersion}"
hc:FloatingBlock.Content="{Binding ResourceDateTimeCurrentCultureString}"
Foreground="White"
PreviewMouseDown="UiVersionClick"
Text="{Binding UiVersion, Mode=OneWay}"
PreviewMouseDown="ResourceVersionClick"
Text="{Binding ResourceDateTimeCurrentCultureString, Mode=OneWay}"
TextWrapping="Wrap" />
</Border>
<Border
@@ -174,10 +290,10 @@
Padding="5,3,5,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding CoreVersion}"
hc:FloatingBlock.Content="{Binding BuildDateTimeCurrentCultureString}"
Foreground="White"
PreviewMouseDown="CoreVersionClick"
Text="{DynamicResource CoreVersion}"
PreviewMouseDown="MaaVersionClick"
Text="{DynamicResource BuildDateTime}"
TextWrapping="Wrap" />
</Border>
<Border
@@ -189,12 +305,12 @@
<TextBlock
MinWidth="50"
Padding="5,3,5,3"
HorizontalAlignment="Left"
HorizontalAlignment="Center"
VerticalAlignment="Center"
hc:FloatingBlock.Content="{Binding CoreVersion}"
hc:FloatingBlock.Content="{Binding BuildDateTimeCurrentCultureString}"
Foreground="White"
PreviewMouseDown="CoreVersionClick"
Text="{Binding CoreVersion, Mode=OneWay}"
PreviewMouseDown="MaaVersionClick"
Text="{Binding BuildDateTimeCurrentCultureString, Mode=OneWay}"
TextWrapping="Wrap" />
</Border>
</Grid>

View File

@@ -49,6 +49,11 @@ namespace MaaWpfGui.Views.UserControl
Interval = new TimeSpan(0, 0, 6),
};
private void MaaVersionClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboardAsync($"UI Version: {SettingsViewModel.UiVersion}\nCore Version: {SettingsViewModel.CoreVersion}\nBuild Time: {SettingsViewModel.BuildDateTimeCurrentCultureString}");
}
private void CoreVersionClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboardAsync("Core Version: " + SettingsViewModel.CoreVersion);
@@ -62,7 +67,7 @@ namespace MaaWpfGui.Views.UserControl
private void ResourceVersionClick(object sender, MouseButtonEventArgs e)
{
CopyToClipboardAsync("Resource Version: " + Instances.SettingsViewModel.ResourceVersion);
CopyToClipboardAsync($"Resource Version: {Instances.SettingsViewModel.ResourceVersion}\nResource Time: {Instances.SettingsViewModel.ResourceDateTimeCurrentCultureString}");
}
private static void CopyToClipboardAsync(string text)