using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using LanMountainDesktop.Launcher.Resources;
using LanMountainDesktop.Launcher.Services;
namespace LanMountainDesktop.Launcher.Views;
///
/// 迁移提示窗口 - 提示用户卸载旧版本
///
public partial class MigrationPromptWindow : Window
{
private readonly TaskCompletionSource _completionSource = new();
private LegacyVersionInfo? _legacyInfo;
public MigrationPromptWindow()
{
AvaloniaXamlLoader.Load(this);
InitializeEventHandlers();
}
///
/// 设置老版本信息
///
public void SetLegacyInfo(LegacyVersionInfo info)
{
_legacyInfo = info;
// 更新 UI
var versionText = this.FindControl("VersionText");
var pathText = this.FindControl("PathText");
var typeText = this.FindControl("TypeText");
var descriptionText = this.FindControl("DescriptionText");
if (versionText != null)
{
versionText.Text = info.Version;
}
if (pathText != null)
{
pathText.Text = info.InstallPath;
}
if (typeText != null)
{
typeText.Text = info.InstallType switch
{
LegacyInstallType.Registry => Strings.Migration_Installed,
LegacyInstallType.Portable => Strings.Migration_Portable,
_ => Strings.Migration_Unknown
};
}
if (descriptionText != null)
{
descriptionText.Text = string.Format(Strings.Migration_DetectedDescFormat, info.Version);
}
}
///
/// 初始化事件处理程序
///
private void InitializeEventHandlers()
{
var showLocationButton = this.FindControl