Files
Better-Seewo/Manager/Pages/InstallPage.xaml

463 lines
27 KiB
Plaintext
Raw Normal View History

<Page x:Class="Better_Seewo.Manager.Pages.InstallPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="900"
FontFamily="Microsoft YaHei UI"
Title="安装管理">
<!-- 页面资源字典 -->
<Page.Resources>
<!-- 按钮悬停缩放动画 -->
<Style x:Key="ActionButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{DynamicResource AccentBrush}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Padding" Value="20,10"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="btnBorder"
Background="{TemplateBinding Background}"
CornerRadius="6"
Padding="{TemplateBinding Padding}"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<ScaleTransform ScaleX="1.0" ScaleY="1.0"/>
</Border.RenderTransform>
<ContentPresenter x:Name="contentPresenter"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<!-- 悬停缩放动画 1.0 -> 1.05, 150ms -->
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.05" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
To="1.05" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.0" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
To="1.0" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 次要按钮样式 -->
<Style x:Key="SecondaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="Medium"/>
<Setter Property="Padding" Value="20,10"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="BorderThickness" Value="1.5"/>
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="btnBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="6"
Padding="{TemplateBinding Padding}"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<ScaleTransform ScaleX="1.0" ScaleY="1.0"/>
</Border.RenderTransform>
<ContentPresenter x:Name="contentPresenter"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.05" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
To="1.05" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)"
To="1.0" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
<DoubleAnimation Storyboard.TargetName="btnBorder"
Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
To="1.0" Duration="0:0:0.150"
EasingFunction="{StaticResource CubicEase}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- 缓动函数引用 -->
<CubicEase x:Key="CubicEase" EasingMode="EaseOut"/>
<QuadraticEase x:Key="QuadraticEase" EasingMode="EaseOut"/>
<!-- 状态卡片样式 -->
<Style x:Key="StatusCardStyle" TargetType="Border">
<Setter Property="Background" Value="{DynamicResource CardBackgroundBrush}"/>
<Setter Property="CornerRadius" Value="10"/>
<Setter Property="Padding" Value="20"/>
<Setter Property="Margin" Value="8"/>
</Style>
</Page.Resources>
<!-- 主背景 -->
<Grid Background="{DynamicResource BackgroundBrush}">
<!-- 滚动视图 -->
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<StackPanel Margin="40,30,40,40">
<!-- ====== 顶部标题区域 ====== -->
<StackPanel Margin="0,0,0,25">
<TextBlock Text="安装管理"
FontSize="28"
FontWeight="Bold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="管理 Better-Seewo 插件的安装与配置"
FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,4,0,0"/>
</StackPanel>
<!-- ====== 状态检测卡片区域 (2x2 Grid) ====== -->
<Grid Margin="0,0,0,25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 卡片1: EN5安装状态 -->
<Border x:Name="Card1"
Grid.Column="0" Grid.Row="0"
Style="{StaticResource StatusCardStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="30"/>
</Border.RenderTransform>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
<!-- 状态图标容器 -->
<Ellipse x:Name="En5StatusIcon"
Width="40" Height="40"
Margin="0,0,12,0">
<Ellipse.Fill>
<SolidColorBrush Color="Gray"/>
</Ellipse.Fill>
<!-- 绿色勾号 Path已安装状态 -->
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="#FFAAAAAA"/>
</Style>
</Ellipse.Style>
</Ellipse>
<StackPanel>
<TextBlock Text="EN5 安装状态"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="检测希沃白板5安装情况"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,2,0,0"/>
</StackPanel>
</StackPanel>
<!-- 状态信息 -->
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="6"
Padding="12">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="状态:" FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="En5StatusText" Text="检测中..."
FontSize="13" FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,4,0,0">
<TextBlock Text="版本:" FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="En5VersionText" Text="-"
FontSize="13" FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
</StackPanel>
<TextBlock x:Name="En5PathText" Text="路径:-"
FontSize="11"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,4,0,0"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- 卡片2: 插件状态 -->
<Border x:Name="Card2"
Grid.Column="1" Grid.Row="0"
Style="{StaticResource StatusCardStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="30"/>
</Border.RenderTransform>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
<Ellipse x:Name="PluginStatusIcon"
Width="40" Height="40"
Margin="0,0,12,0"/>
<StackPanel>
<TextBlock Text="插件状态"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="检测 Better-EN5 插件安装情况"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,2,0,0"/>
</StackPanel>
</StackPanel>
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="6"
Padding="12">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="状态:" FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="PluginStatusText" Text="检测中..."
FontSize="13" FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
</StackPanel>
<TextBlock x:Name="PluginPathText" Text="路径:-"
FontSize="11"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,4,0,0"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- 卡片3: 管理器状态 -->
<Border x:Name="Card3"
Grid.Column="0" Grid.Row="1"
Style="{StaticResource StatusCardStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="30"/>
</Border.RenderTransform>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
<Ellipse x:Name="ManagerStatusIcon"
Width="40" Height="40"
Margin="0,0,12,0"/>
<StackPanel>
<TextBlock Text="管理器状态"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="检测管理器程序安装情况"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,2,0,0"/>
</StackPanel>
</StackPanel>
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="6"
Padding="12">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="状态:" FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="ManagerStatusText" Text="检测中..."
FontSize="13" FontWeight="Medium"
Foreground="{DynamicResource TextPrimaryBrush}"/>
</StackPanel>
<TextBlock x:Name="ManagerPathText" Text="路径:-"
FontSize="11"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,4,0,0"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- 卡片4: 安装路径 -->
<Border x:Name="Card4"
Grid.Column="1" Grid.Row="1"
Style="{StaticResource StatusCardStyle}"
Opacity="0"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TranslateTransform X="0" Y="30"/>
</Border.RenderTransform>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
<Ellipse x:Name="PathStatusIcon"
Width="40" Height="40"
Margin="0,0,12,0"/>
<StackPanel>
<TextBlock Text="安装路径"
FontSize="16"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"/>
<TextBlock Text="当前检测到的EN5安装路径"
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,2,0,0"/>
</StackPanel>
</StackPanel>
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="6"
Padding="12">
<StackPanel>
<TextBlock Text="EN5 路径:"
FontSize="13"
Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="InstallPathText" Text="检测中..."
FontSize="13" FontWeight="Medium"
Foreground="{DynamicResource AccentBrush}"
Margin="0,2,0,0"
TextTrimming="CharacterEllipsis"/>
<TextBlock x:Name="InstallPathValidText"
Text="路径有效性:检测中"
FontSize="11"
Foreground="{DynamicResource TextSecondaryBrush}"
Margin="0,6,0,0"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
</Grid>
<!-- ====== 操作日志区域 ====== -->
<Border Background="{DynamicResource CardBackgroundBrush}"
CornerRadius="10"
Padding="20"
Margin="8,0,8,20">
<StackPanel>
<TextBlock Text="操作日志"
FontSize="15"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"
Margin="0,0,0,10"/>
<Border Background="{DynamicResource BackgroundBrush}"
CornerRadius="6"
MaxHeight="120"
Padding="8">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock x:Name="LogText"
Text="等待操作..."
FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}"
FontFamily="Consolas, Microsoft YaHei UI"/>
</ScrollViewer>
</Border>
</StackPanel>
</Border>
<!-- ====== 底部操作按钮区域 ====== -->
<Border Background="{DynamicResource CardBackgroundBrush}"
CornerRadius="10"
Padding="20">
<StackPanel>
<TextBlock Text="快捷操作"
FontSize="15"
FontWeight="SemiBold"
Foreground="{DynamicResource TextPrimaryBrush}"
Margin="0,0,0,15"/>
<!-- 第一行:安装按钮 -->
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center"
Margin="0,0,0,10">
<Button x:Name="BtnInstallPlugin"
Content="安装插件"
Style="{StaticResource ActionButtonStyle}"
Click="BtnInstallPlugin_Click"/>
<Button x:Name="BtnUninstallPlugin"
Content="卸载插件"
Style="{StaticResource SecondaryButtonStyle}"
Click="BtnUninstallPlugin_Click"/>
<Button x:Name="BtnInstallManager"
Content="安装管理器"
Style="{StaticResource ActionButtonStyle}"
Click="BtnInstallManager_Click"/>
<Button x:Name="BtnUninstallManager"
Content="卸载管理器"
Style="{StaticResource SecondaryButtonStyle}"
Click="BtnUninstallManager_Click"/>
</StackPanel>
<!-- 第二行:刷新按钮 -->
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center">
<Button x:Name="BtnRefresh"
Content="刷新状态"
Style="{StaticResource SecondaryButtonStyle}"
Click="BtnRefresh_Click"/>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</Grid>
</Page>