mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 23:50:18 -04:00

Set credentials validation works as intended Getting settings has default values Add parent group in Move searchbox Moving entries work as intended Removed unreferenced code files
138 lines
8.0 KiB
XML
138 lines
8.0 KiB
XML
<UserControl x:Name="UserControl"
|
|
x:Class="ModernKeePass.Views.UserControls.SetCredentialsUserControl"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
|
|
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
|
|
xmlns:converters="using:ModernKeePass.Converters"
|
|
mc:Ignorable="d">
|
|
<UserControl.Resources>
|
|
<converters:ProgressBarLegalValuesConverter x:Key="ProgressBarLegalValuesConverter"/>
|
|
<converters:DoubleToSolidColorBrushConverter x:Key="DoubleToSolidColorBrushConverter"/>
|
|
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter"/>
|
|
</UserControl.Resources>
|
|
<Grid x:Name="Grid" DataContext="{Binding Source={StaticResource Locator}, Path=SetCredentials}">
|
|
<Grid.Resources>
|
|
<SolidColorBrush x:Key="ErrorBrush" Color="Red" />
|
|
<SolidColorBrush x:Key="ValidBrush" Color="Green" />
|
|
</Grid.Resources>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="50" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="45" />
|
|
<RowDefinition Height="45" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="40" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="40" />
|
|
</Grid.RowDefinitions>
|
|
<CheckBox Grid.Row="0" Grid.Column="0" IsChecked="{Binding HasPassword, Mode=TwoWay}" />
|
|
<PasswordBox Grid.Row="0" Grid.Column="1" Height="30"
|
|
x:Uid="CompositeKeyPassword"
|
|
x:Name="PasswordBox"
|
|
Password="{Binding Password, Mode=TwoWay}"
|
|
IsPasswordRevealButtonEnabled="True" >
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="GotFocus">
|
|
<core:ChangePropertyAction TargetObject="{Binding}" PropertyName="HasPassword" Value="True" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</PasswordBox>
|
|
<PasswordBox Grid.Row="1" Grid.Column="1" Height="30"
|
|
x:Uid="CompositeKeyConfirmPassword"
|
|
x:Name="ConfirmPasswordBox"
|
|
Password="{Binding ConfirmPassword, Mode=TwoWay}"
|
|
IsPasswordRevealButtonEnabled="True" />
|
|
<ProgressBar Grid.Row="1" Grid.Column="1"
|
|
Maximum="128" VerticalAlignment="Bottom"
|
|
Value="{Binding PasswordComplexityIndicator, ConverterParameter=0\,128, Converter={StaticResource ProgressBarLegalValuesConverter}}"
|
|
Foreground="{Binding PasswordComplexityIndicator, ConverterParameter=128, Converter={StaticResource DoubleToSolidColorBrushConverter}}"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="1"
|
|
FontSize="14" FontWeight="Light"
|
|
x:Uid="SetCredentialsControlMatchingPasswords"
|
|
Foreground="{StaticResource ErrorBrush}"
|
|
Visibility="{Binding IsPasswordValid, Converter={StaticResource InverseBooleanToVisibilityConverter}}" />
|
|
|
|
<CheckBox Grid.Row="3" Grid.Column="0" IsChecked="{Binding HasKeyFile, Mode=TwoWay}" />
|
|
<HyperlinkButton Grid.Row="3" Grid.Column="1" Margin="-15,0,0,0"
|
|
x:Name="HyperlinkButton"
|
|
Content="{Binding KeyFileText}"
|
|
IsEnabled="{Binding HasKeyFile}"
|
|
Click="KeyFileButton_Click" />
|
|
<HyperlinkButton Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right"
|
|
IsEnabled="{Binding HasKeyFile}"
|
|
Click="CreateKeyFileButton_Click">
|
|
<SymbolIcon Symbol="Add">
|
|
<ToolTipService.ToolTip>
|
|
<ToolTip x:Uid="CompositeKeyNewKeyFileTooltip" />
|
|
</ToolTipService.ToolTip>
|
|
</SymbolIcon>
|
|
</HyperlinkButton>
|
|
<TextBlock Grid.Row="4" Grid.Column="1" FontSize="14" FontWeight="Light"
|
|
x:Uid="SetCredentialsControlMissingKeyFile"
|
|
Foreground="{StaticResource ErrorBrush}"
|
|
Visibility="{Binding IsKeyFileValid, Converter={StaticResource InverseBooleanToVisibilityConverter}}" />
|
|
|
|
<Button Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="5"
|
|
Command="{Binding GenerateCredentialsCommand}"
|
|
Content="{Binding ButtonLabel, ElementName=UserControl}" />
|
|
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CredentialStatus">
|
|
<VisualState x:Name="PasswordError">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PasswordBox" Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ErrorBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ConfirmPasswordBox" Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ErrorBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="PasswordValid">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PasswordBox" Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ValidBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ConfirmPasswordBox" Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ValidBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="KeyFileError">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HyperlinkButton" Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ErrorBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="KeyFileValid">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HyperlinkButton" Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ValidBrush}"/>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:DataTriggerBehavior Binding="{Binding IsPasswordValid}" Value="False">
|
|
<core:GoToStateAction StateName="PasswordError"/>
|
|
</core:DataTriggerBehavior>
|
|
<core:DataTriggerBehavior Binding="{Binding IsPasswordValid}" Value="True">
|
|
<core:GoToStateAction StateName="PasswordValid"/>
|
|
</core:DataTriggerBehavior>
|
|
<core:DataTriggerBehavior Binding="{Binding IsKeyFileValid}" Value="False">
|
|
<core:GoToStateAction StateName="KeyFileError"/>
|
|
</core:DataTriggerBehavior>
|
|
<core:DataTriggerBehavior Binding="{Binding IsKeyFileValid}" Value="True">
|
|
<core:GoToStateAction StateName="KeyFileValid"/>
|
|
</core:DataTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</Grid>
|
|
</UserControl>
|