mirror of
https://github.com/bitcookies/winrar-keygen.git
synced 2026-07-28 23:32:52 +00:00
565 lines
36 KiB
XML
565 lines
36 KiB
XML
<ui:FluentWindow x:Class="WinRarKeygenGui.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
|
xmlns:vm="clr-namespace:WinRarKeygenGui.ViewModels"
|
|
Title="WinRAR Keygen"
|
|
Width="400" MinWidth="360" MaxWidth="480"
|
|
SizeToContent="Height"
|
|
ResizeMode="NoResize"
|
|
WindowStartupLocation="CenterScreen"
|
|
ExtendsContentIntoTitleBar="True"
|
|
WindowBackdropType="Mica"
|
|
FocusVisualStyle="{x:Null}">
|
|
|
|
<Window.DataContext>
|
|
<vm:MainViewModel />
|
|
</Window.DataContext>
|
|
|
|
<Grid Focusable="False"
|
|
FocusVisualStyle="{x:Null}">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Custom Title Bar -->
|
|
<ui:TitleBar Grid.Row="0"
|
|
ShowMaximize="False"
|
|
ShowMinimize="True"
|
|
Title="" />
|
|
|
|
<!-- Logo Section (always visible) -->
|
|
<StackPanel Grid.Row="1" HorizontalAlignment="Center" Margin="0,2,0,14">
|
|
<Image Source="Assets/icon.png"
|
|
Width="56" Height="56"
|
|
RenderOptions.BitmapScalingMode="HighQuality"
|
|
HorizontalAlignment="Center" />
|
|
<TextBlock Text="WinRAR Keygen"
|
|
FontSize="16" FontWeight="SemiBold"
|
|
HorizontalAlignment="Center"
|
|
Margin="0,6,0,0" />
|
|
</StackPanel>
|
|
|
|
<!-- Flip Container (fixed height, content swaps inside) -->
|
|
<Grid x:Name="FlipContainer" Grid.Row="2" ClipToBounds="True"
|
|
Focusable="False"
|
|
FocusVisualStyle="{x:Null}">
|
|
|
|
<!-- ==================== FRONT PANEL ==================== -->
|
|
<Border x:Name="FrontPanel" RenderTransformOrigin="0.5,0.5">
|
|
<Border.RenderTransform>
|
|
<ScaleTransform x:Name="FrontScale" ScaleX="1" />
|
|
</Border.RenderTransform>
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
Focusable="False"
|
|
FocusVisualStyle="{x:Null}">
|
|
<StackPanel Margin="24,0,24,16">
|
|
|
|
<!-- Username -->
|
|
<TextBlock Text="{Binding Text.Username}"
|
|
FontSize="12" FontWeight="Medium"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}"
|
|
Margin="0,0,0,4" />
|
|
<Border x:Name="UsernameBorder" Style="{StaticResource InputBorderStyle}" Margin="0,0,0,10">
|
|
<TextBox Text="{Binding Username, UpdateSourceTrigger=PropertyChanged}"
|
|
Style="{StaticResource MockupTextBoxStyle}" />
|
|
</Border>
|
|
<Popup x:Name="UsernameWarningPopup"
|
|
PlacementTarget="{Binding ElementName=UsernameBorder}"
|
|
Placement="Bottom" HorizontalOffset="0" VerticalOffset="-4"
|
|
AllowsTransparency="True" PopupAnimation="Fade"
|
|
IsOpen="{Binding UsernameWarningVisible}"
|
|
IsHitTestVisible="False">
|
|
<Grid Width="{Binding ActualWidth, ElementName=UsernameBorder}">
|
|
<!-- Body -->
|
|
<Border Style="{StaticResource WarningPopupBorderStyle}" Margin="0,5,0,0">
|
|
<TextBlock Text="{Binding UsernameWarning}"
|
|
Style="{StaticResource WarningPopupTextStyle}" />
|
|
</Border>
|
|
<!-- Arrow (open path: stroke on sloped edges only, no base) -->
|
|
<Path Data="M6,6 L12,0 L18,6"
|
|
Fill="{DynamicResource WarningPopupBg}"
|
|
Stroke="{DynamicResource WarningPopupBorder}" StrokeThickness="1"
|
|
HorizontalAlignment="Left" Margin="14,0,0,0"
|
|
VerticalAlignment="Top" />
|
|
</Grid>
|
|
</Popup>
|
|
|
|
<!-- License Name -->
|
|
<TextBlock Text="{Binding Text.LicenseName}"
|
|
FontSize="12" FontWeight="Medium"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}"
|
|
Margin="0,0,0,4" />
|
|
<Border x:Name="LicenseNameBorder" Style="{StaticResource InputBorderStyle}" Margin="0,0,0,10">
|
|
<TextBox Text="{Binding LicenseName, UpdateSourceTrigger=PropertyChanged}"
|
|
Style="{StaticResource MockupTextBoxStyle}" />
|
|
</Border>
|
|
<Popup x:Name="LicenseWarningPopup"
|
|
PlacementTarget="{Binding ElementName=LicenseNameBorder}"
|
|
Placement="Bottom" HorizontalOffset="0" VerticalOffset="-4"
|
|
AllowsTransparency="True" PopupAnimation="Fade"
|
|
IsOpen="{Binding LicenseNameWarningVisible}"
|
|
IsHitTestVisible="False">
|
|
<Grid Width="{Binding ActualWidth, ElementName=LicenseNameBorder}">
|
|
<!-- Body -->
|
|
<Border Style="{StaticResource WarningPopupBorderStyle}" Margin="0,5,0,0">
|
|
<TextBlock Text="{Binding LicenseNameWarning}"
|
|
Style="{StaticResource WarningPopupTextStyle}" />
|
|
</Border>
|
|
<!-- Arrow (open path: stroke on sloped edges only, no base) -->
|
|
<Path Data="M6,6 L12,0 L18,6"
|
|
Fill="{DynamicResource WarningPopupBg}"
|
|
Stroke="{DynamicResource WarningPopupBorder}" StrokeThickness="1"
|
|
HorizontalAlignment="Left" Margin="14,0,0,0"
|
|
VerticalAlignment="Top" />
|
|
</Grid>
|
|
</Popup>
|
|
|
|
<!-- Settings Card -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8"
|
|
Padding="12"
|
|
Margin="0,4,0,4">
|
|
<StackPanel>
|
|
|
|
<!-- Encoding -->
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="60" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Text.Encoding}"
|
|
FontSize="12" FontWeight="Medium"
|
|
VerticalAlignment="Center"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}" />
|
|
<Border Grid.Column="1"
|
|
Background="{DynamicResource SegmentedControlBg}"
|
|
CornerRadius="6" Padding="2">
|
|
<Grid x:Name="EncodingGrid">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<!-- Sliding pill indicator (behind radio buttons) -->
|
|
<Border x:Name="EncodingPill" Grid.Column="0"
|
|
Background="{DynamicResource SegmentedActiveBg}"
|
|
CornerRadius="6" IsHitTestVisible="False">
|
|
<Border.RenderTransform>
|
|
<TranslateTransform x:Name="EncodingPillTranslate" X="0" />
|
|
</Border.RenderTransform>
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="4" ShadowDepth="1"
|
|
Opacity="0.1" Color="Black" />
|
|
</Border.Effect>
|
|
</Border>
|
|
<RadioButton Grid.Column="0" Content="UTF-8" Margin="0,0,2,0"
|
|
IsChecked="{Binding SelectedEncoding, Converter={StaticResource IntToBoolConverter}, ConverterParameter=0}"
|
|
Style="{StaticResource SegmentedRadioStyle}" GroupName="Encoding" />
|
|
<RadioButton Grid.Column="1" Content="ASCII" Margin="2,0"
|
|
IsChecked="{Binding SelectedEncoding, Converter={StaticResource IntToBoolConverter}, ConverterParameter=1}"
|
|
Style="{StaticResource SegmentedRadioStyle}" GroupName="Encoding" />
|
|
<RadioButton Grid.Column="2" Content="ANSI" Margin="2,0,0,0"
|
|
IsChecked="{Binding SelectedEncoding, Converter={StaticResource IntToBoolConverter}, ConverterParameter=2}"
|
|
Style="{StaticResource SegmentedRadioStyle}" GroupName="Encoding" />
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<Border Height="1" Background="{DynamicResource SettingsDividerBrush}" Margin="0,8" />
|
|
|
|
<!-- Output file -->
|
|
<Grid IsEnabled="{Binding ActivateWinRar, Converter={StaticResource InverseBoolConverter}}">
|
|
<Grid.Style>
|
|
<Style TargetType="Grid">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ActivateWinRar}" Value="True">
|
|
<Setter Property="Opacity" Value="0.4" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ActivateWinRar}" Value="False">
|
|
<Setter Property="Opacity" Value="1.0" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Grid.Style>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="60" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Text.Output}"
|
|
FontSize="12" FontWeight="Medium"
|
|
VerticalAlignment="Center"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}" />
|
|
<Border Grid.Column="1" Style="{StaticResource SmallInputBorderStyle}" Margin="0,0,6,0">
|
|
<TextBox Text="{Binding OutputFilePath, UpdateSourceTrigger=PropertyChanged}"
|
|
Style="{StaticResource SmallTextBoxStyle}" />
|
|
</Border>
|
|
<Button Grid.Column="2" Content="{Binding Text.Browse}"
|
|
Command="{Binding BrowseOutputFileCommand}"
|
|
Style="{StaticResource SmallBtnStyle}" />
|
|
</Grid>
|
|
|
|
<Border Height="1" Background="{DynamicResource SettingsDividerBrush}" Margin="0,8" />
|
|
|
|
<!-- Activate toggle -->
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding Text.ActivateWinRar}" FontSize="12" FontWeight="Medium" />
|
|
<TextBlock FontSize="10"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}">
|
|
<Run Text="{Binding Text.WriteTo}" /><Run x:Name="WinRarPathLink"
|
|
Text="%APPDATA%\WinRAR\"
|
|
Cursor="Hand"
|
|
MouseEnter="WinRarPath_MouseEnter"
|
|
MouseLeave="WinRarPath_MouseLeave"
|
|
MouseLeftButtonUp="WinRarPath_Click" />
|
|
</TextBlock>
|
|
</StackPanel>
|
|
<ToggleButton Grid.Column="1"
|
|
IsChecked="{Binding ActivateWinRar}"
|
|
Style="{StaticResource PillToggleStyle}"
|
|
VerticalAlignment="Center" />
|
|
</Grid>
|
|
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Generate Button -->
|
|
<Button Command="{Binding GenerateCommand}"
|
|
Style="{StaticResource GenerateButtonStyle}" Margin="0,6,0,0">
|
|
<TextBlock Text="{Binding Text.GenerateKey}" FontSize="13" FontWeight="SemiBold" />
|
|
</Button>
|
|
|
|
<!-- Footer -->
|
|
<Border Margin="0,12,0,0" BorderThickness="0,1,0,0"
|
|
BorderBrush="{DynamicResource SettingsDividerBrush}" Padding="0,10,0,0">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" Orientation="Horizontal">
|
|
<Button Style="{StaticResource FooterBtnStyle}"
|
|
Click="Settings_Click" ToolTip="{Binding Text.Settings}" Margin="0,0,4,0">
|
|
<ui:SymbolIcon Symbol="Settings24" FontSize="14" />
|
|
</Button>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding ArchLabel}" FontSize="10"
|
|
Foreground="{ui:ThemeResource TextFillColorDisabledBrush}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0" />
|
|
<Grid>
|
|
<TextBlock x:Name="VersionLink"
|
|
Text="{Binding VersionDisplayText}" FontSize="10" Cursor="Hand"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
VerticalAlignment="Center"
|
|
MouseEnter="VersionLink_MouseEnter"
|
|
MouseLeave="VersionLink_MouseLeave"
|
|
MouseLeftButtonUp="VersionLink_Click"
|
|
ToolTip="{Binding Text.CheckForUpdatesTooltip}" />
|
|
<Ellipse Width="6" Height="6" Fill="#E53935"
|
|
HorizontalAlignment="Right" VerticalAlignment="Top"
|
|
Margin="0,-4,-6,0" IsHitTestVisible="False"
|
|
Visibility="{Binding HasUpdate, Converter={StaticResource BoolToVisConverter}}" />
|
|
</Grid>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</Border>
|
|
|
|
<!-- ==================== BACK PANEL (Settings) ==================== -->
|
|
<Border x:Name="BackPanel" Visibility="Collapsed" RenderTransformOrigin="0.5,0.5">
|
|
<Border.RenderTransform>
|
|
<ScaleTransform x:Name="BackScale" ScaleX="0" />
|
|
</Border.RenderTransform>
|
|
<DockPanel Margin="24,0,24,16" LastChildFill="True">
|
|
|
|
<!-- Footer at bottom — back button aligned with gear button -->
|
|
<Border DockPanel.Dock="Bottom" Margin="0,12,0,0"
|
|
BorderThickness="0,1,0,0"
|
|
BorderBrush="{DynamicResource SettingsDividerBrush}"
|
|
Padding="0,10,0,0">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Button Style="{StaticResource FooterBtnStyle}"
|
|
Click="BackToMain_Click" ToolTip="{Binding Text.Back}" Margin="0,0,8,0">
|
|
<ui:SymbolIcon Symbol="ArrowLeft24" FontSize="14" />
|
|
</Button>
|
|
<TextBlock Text="{Binding Text.Settings}"
|
|
FontSize="13" FontWeight="SemiBold"
|
|
VerticalAlignment="Center" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Settings content -->
|
|
<ScrollViewer x:Name="SettingsScrollViewer"
|
|
VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
Focusable="False"
|
|
FocusVisualStyle="{x:Null}"
|
|
Style="{StaticResource OverlayScrollViewerStyle}">
|
|
<StackPanel VerticalAlignment="Top">
|
|
|
|
<!-- 1. Remember Settings -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8" Padding="14" Margin="0,0,0,8">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding Text.RememberSettings}" FontSize="13" FontWeight="Medium" />
|
|
<TextBlock Text="{Binding Text.RememberSettingsDescription}" FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}" Margin="0,3,0,0" />
|
|
</StackPanel>
|
|
<ToggleButton Grid.Column="1" IsChecked="{Binding RememberSettings}"
|
|
Style="{StaticResource PillToggleStyle}" VerticalAlignment="Center" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 2. Appearance -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8" Padding="14" Margin="0,0,0,8"
|
|
IsEnabled="{Binding RememberSettings}">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding RememberSettings}" Value="False">
|
|
<Setter Property="Opacity" Value="0.4" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<StackPanel>
|
|
<TextBlock Text="{Binding Text.Appearance}" FontSize="13" FontWeight="Medium" Margin="0,0,0,8" />
|
|
<Grid Margin="0,0,0,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Text.Theme}"
|
|
FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
VerticalAlignment="Center" />
|
|
<ComboBox Grid.Column="1"
|
|
Width="{StaticResource SettingsComboBoxRowWidth}"
|
|
MinWidth="{StaticResource SettingsComboBoxRowWidth}"
|
|
MaxWidth="{StaticResource SettingsComboBoxRowWidth}"
|
|
ItemsSource="{Binding ThemeOptions}"
|
|
SelectedValue="{Binding SelectedThemeMode, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
SelectedValuePath="Value"
|
|
DisplayMemberPath="DisplayName"
|
|
PreviewMouseWheel="SettingsComboBox_PreviewMouseWheel"
|
|
Style="{StaticResource SettingsComboBoxStyle}" />
|
|
</Grid>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Text.Language}"
|
|
FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
VerticalAlignment="Center" />
|
|
<ComboBox Grid.Column="1"
|
|
Width="{StaticResource SettingsComboBoxRowWidth}"
|
|
MinWidth="{StaticResource SettingsComboBoxRowWidth}"
|
|
MaxWidth="{StaticResource SettingsComboBoxRowWidth}"
|
|
ItemsSource="{Binding LanguageOptions}"
|
|
SelectedValue="{Binding SelectedLanguageMode, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
SelectedValuePath="Value"
|
|
DisplayMemberPath="DisplayName"
|
|
PreviewMouseWheel="SettingsComboBox_PreviewMouseWheel"
|
|
Style="{StaticResource SettingsComboBoxStyle}" />
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 3. Auto-fill License Name -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8" Padding="14" Margin="0,0,0,8"
|
|
IsEnabled="{Binding RememberSettings}">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding RememberSettings}" Value="False">
|
|
<Setter Property="Opacity" Value="0.4" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding Text.AutofillLicenseName}" FontSize="13" FontWeight="Medium" />
|
|
<TextBlock Text="{Binding Text.AutofillLicenseNameDescription}" FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}" Margin="0,3,0,0" />
|
|
</StackPanel>
|
|
<ToggleButton Grid.Column="1" IsChecked="{Binding AutoFillLicenseName}"
|
|
Style="{StaticResource PillToggleStyle}" VerticalAlignment="Center" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 4. Backup existing key -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8" Padding="14" Margin="0,0,0,8"
|
|
IsEnabled="{Binding RememberSettings}">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding RememberSettings}" Value="False">
|
|
<Setter Property="Opacity" Value="0.4" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding Text.BackUpExistingKey}" FontSize="13" FontWeight="Medium" />
|
|
<TextBlock Text="{Binding Text.BackUpExistingKeyDescription}" FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}" Margin="0,3,0,0" />
|
|
</StackPanel>
|
|
<ToggleButton Grid.Column="1" IsChecked="{Binding BackupExistingKey}"
|
|
Style="{StaticResource PillToggleStyle}" VerticalAlignment="Center" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 5. Check for Updates -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="8" Padding="14" Margin="0,0,0,8"
|
|
IsEnabled="{Binding RememberSettings}">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding RememberSettings}" Value="False">
|
|
<Setter Property="Opacity" Value="0.4" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" VerticalAlignment="Center">
|
|
<TextBlock Text="{Binding Text.CheckForUpdates}" FontSize="13" FontWeight="Medium" />
|
|
<TextBlock Text="{Binding Text.CheckForUpdatesDescription}" FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}" Margin="0,3,0,0" />
|
|
</StackPanel>
|
|
<ToggleButton Grid.Column="1" IsChecked="{Binding CheckForUpdates}"
|
|
Style="{StaticResource PillToggleStyle}" VerticalAlignment="Center" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
<!-- ==================== RESULT PANEL (Generated Key) ==================== -->
|
|
<Border x:Name="ResultPanel" Visibility="Collapsed" RenderTransformOrigin="0.5,0.5">
|
|
<Border.RenderTransform>
|
|
<ScaleTransform x:Name="ResultScale" ScaleX="0" />
|
|
</Border.RenderTransform>
|
|
<DockPanel Margin="24,0,24,16" LastChildFill="True">
|
|
|
|
<!-- Footer at bottom — back button -->
|
|
<Border DockPanel.Dock="Bottom" Margin="0,12,0,0"
|
|
BorderThickness="0,1,0,0"
|
|
BorderBrush="{DynamicResource SettingsDividerBrush}"
|
|
Padding="0,10,0,0">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Button Style="{StaticResource FooterBtnStyle}"
|
|
Click="ResultBackToMain_Click" ToolTip="{Binding Text.Back}" Margin="0,0,8,0">
|
|
<ui:SymbolIcon Symbol="ArrowLeft24" FontSize="14" />
|
|
</Button>
|
|
<TextBlock Text="{Binding Text.GeneratedKey}"
|
|
FontSize="13" FontWeight="SemiBold"
|
|
VerticalAlignment="Center" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Result content -->
|
|
<StackPanel VerticalAlignment="Top">
|
|
|
|
<!-- Generated header + Copy button -->
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="{Binding Text.Generated}"
|
|
FontSize="12" FontWeight="Medium"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}"
|
|
VerticalAlignment="Center" />
|
|
<Button Grid.Column="1" Command="{Binding CopyOutputCommand}"
|
|
Style="{StaticResource CopyBtnStyle}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<ui:SymbolIcon Symbol="Copy24" FontSize="12" Margin="0,0,4,0" />
|
|
<TextBlock Text="{Binding CopyButtonText}" />
|
|
</StackPanel>
|
|
</Button>
|
|
</Grid>
|
|
|
|
<!-- Output box -->
|
|
<Border Background="{DynamicResource OutputBoxBg}"
|
|
BorderBrush="{DynamicResource OutputBoxBorder}"
|
|
BorderThickness="1" CornerRadius="6" Padding="8">
|
|
<TextBox Text="{Binding OutputText, Mode=OneWay}"
|
|
IsReadOnly="True" TextWrapping="NoWrap"
|
|
FontFamily="Cascadia Code, Consolas, Courier New"
|
|
FontSize="9.5" BorderThickness="0"
|
|
Background="Transparent"
|
|
HorizontalScrollBarVisibility="Hidden"
|
|
VerticalScrollBarVisibility="Auto" />
|
|
</Border>
|
|
|
|
<!-- Status message -->
|
|
<Border Background="{DynamicResource SettingsCardBg}"
|
|
CornerRadius="6" Padding="10,8" Margin="0,8,0,0"
|
|
Visibility="{Binding StatusMessage, Converter={StaticResource StringToVisConverter}}">
|
|
<TextBlock FontSize="11"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}"
|
|
TextWrapping="Wrap" LineHeight="17">
|
|
<Run Text="{Binding StatusMessage, Mode=OneWay}" />
|
|
<LineBreak />
|
|
<Run Text="{Binding Text.KeyWrittenTo}" />
|
|
<Run x:Name="StatusPathLink"
|
|
Text="{Binding StatusFilePath, Mode=OneWay}"
|
|
Cursor="Hand"
|
|
MouseEnter="StatusPath_MouseEnter"
|
|
MouseLeave="StatusPath_MouseLeave"
|
|
MouseLeftButtonUp="StatusPath_Click" />
|
|
</TextBlock>
|
|
</Border>
|
|
|
|
</StackPanel>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
<!-- ==================== CONFETTI OVERLAY ==================== -->
|
|
<Canvas x:Name="ConfettiCanvas" IsHitTestVisible="False" />
|
|
|
|
</Grid>
|
|
</Grid>
|
|
</ui:FluentWindow>
|