mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Status text and password box border colors are updated according to database status Update composite key in Settings work Some code cleanup
507 lines
40 KiB
XML
507 lines
40 KiB
XML
<Page
|
|
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:viewModels="using:ModernKeePass.ViewModels"
|
|
xmlns:converters="using:ModernKeePass.Converters"
|
|
xmlns:local="using:ModernKeePass.Controls"
|
|
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
|
|
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
|
|
xmlns:actions="using:ModernKeePass.Actions"
|
|
x:Name="PageRoot"
|
|
x:Class="ModernKeePass.Pages.EntryDetailPage"
|
|
mc:Ignorable="d">
|
|
<Page.Resources>
|
|
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
|
|
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter"/>
|
|
<converters:ProgressBarLegalValuesConverter x:Key="ProgressBarLegalValuesConverter"/>
|
|
<converters:DoubleToSolidColorBrushConverter x:Key="DoubleToForegroungBrushComplexityConverter"/>
|
|
<converters:NullToBooleanConverter x:Key="NullToBooleanConverter"/>
|
|
<Style TargetType="PasswordBox" x:Name="PasswordBoxWithButtonStyle">
|
|
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
|
|
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
|
|
<Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}" />
|
|
<Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}" />
|
|
<Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}" />
|
|
<Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}" />
|
|
<Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}" />
|
|
<Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
|
|
<Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden" />
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
|
|
<Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="PasswordBox">
|
|
<Grid>
|
|
<Grid.Resources>
|
|
<Style x:Name="RevealButtonStyle" TargetType="Button">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Grid>
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CommonStates">
|
|
<VisualState x:Name="Normal" />
|
|
<VisualState x:Name="PointerOver">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="GlyphElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverBackgroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Pressed">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="GlyphElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Disabled">
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="0"
|
|
Duration="0" />
|
|
<DoubleAnimation Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="0"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<Border x:Name="BorderElement"
|
|
BorderBrush="{ThemeResource TextBoxButtonBorderThemeBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"/>
|
|
<Border x:Name="BackgroundElement"
|
|
Background="{ThemeResource TextBoxButtonBackgroundThemeBrush}"
|
|
Margin="{TemplateBinding BorderThickness}">
|
|
<TextBlock x:Name="GlyphElement"
|
|
Foreground="{ThemeResource TextBoxButtonForegroundThemeBrush}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Center"
|
|
FontStyle="Normal"
|
|
Text=""
|
|
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
|
AutomationProperties.AccessibilityView="Raw"/>
|
|
</Border>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Name="GeneratorButtonStyle" TargetType="Button">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Grid>
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CommonStates">
|
|
<VisualState x:Name="Normal" >
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Background">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedBackgroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="GlyphElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="PointerOver">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Background">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverBackgroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="GlyphElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPointerOverForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Pressed">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Background">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedBackgroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="GlyphElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxButtonPressedForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Disabled">
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="0"
|
|
Duration="0" />
|
|
<DoubleAnimation Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="0"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<Border x:Name="BorderElement"
|
|
BorderBrush="{ThemeResource TextBoxButtonBorderThemeBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"/>
|
|
<Border x:Name="BackgroundElement"
|
|
Background="{ThemeResource TextBoxButtonBackgroundThemeBrush}"
|
|
Margin="{TemplateBinding BorderThickness}">
|
|
<TextBlock x:Name="GlyphElement"
|
|
Foreground="{ThemeResource TextBoxButtonForegroundThemeBrush}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Center"
|
|
FontStyle="Normal"
|
|
Text=""
|
|
Padding="4,0,4,0"
|
|
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
|
AutomationProperties.AccessibilityView="Raw"/>
|
|
</Border>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Grid.Resources>
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CommonStates">
|
|
<VisualState x:Name="Disabled">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Background">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="BorderBrush">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextContentPresenter"
|
|
Storyboard.TargetProperty="Foreground">
|
|
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Normal">
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
Duration="0"
|
|
To="{ThemeResource TextControlBackgroundThemeOpacity}" />
|
|
<DoubleAnimation Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
Duration="0"
|
|
To="{ThemeResource TextControlBorderThemeOpacity}" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="PointerOver">
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="BackgroundElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
Duration="0"
|
|
To="{ThemeResource TextControlPointerOverBackgroundThemeOpacity}" />
|
|
<DoubleAnimation Storyboard.TargetName="BorderElement"
|
|
Storyboard.TargetProperty="Opacity"
|
|
Duration="0"
|
|
To="{ThemeResource TextControlPointerOverBorderThemeOpacity}" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="Focused" />
|
|
</VisualStateGroup>
|
|
<VisualStateGroup x:Name="ButtonStates">
|
|
<VisualState x:Name="ButtonVisible">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RevealButton"
|
|
Storyboard.TargetProperty="Visibility">
|
|
<DiscreteObjectKeyFrame KeyTime="0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<Visibility>Visible</Visibility>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState x:Name="ButtonCollapsed" />
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Border x:Name="BackgroundElement"
|
|
Grid.Row="1"
|
|
Background="{TemplateBinding Background}"
|
|
Margin="{TemplateBinding BorderThickness}"
|
|
Grid.ColumnSpan="3"
|
|
Grid.RowSpan="1"/>
|
|
<Border x:Name="BorderElement"
|
|
Grid.Row="1"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
Grid.ColumnSpan="3"
|
|
Grid.RowSpan="1"/>
|
|
<ContentPresenter x:Name="HeaderContentPresenter"
|
|
Grid.Row="0"
|
|
Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}"
|
|
Margin="0,4,0,4"
|
|
Grid.ColumnSpan="3"
|
|
Content="{TemplateBinding Header}"
|
|
ContentTemplate="{TemplateBinding HeaderTemplate}"
|
|
FontWeight="Semilight" />
|
|
<ScrollViewer x:Name="ContentElement"
|
|
Grid.Row="1"
|
|
HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
|
|
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
|
|
VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
|
|
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
|
|
IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
|
|
IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
|
|
Margin="{TemplateBinding BorderThickness}"
|
|
Padding="{TemplateBinding Padding}"
|
|
IsTabStop="False"
|
|
ZoomMode="Disabled"
|
|
AutomationProperties.AccessibilityView="Raw"/>
|
|
<ContentControl x:Name="PlaceholderTextContentPresenter"
|
|
Grid.Row="1"
|
|
Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}"
|
|
Margin="{TemplateBinding BorderThickness}"
|
|
Padding="{TemplateBinding Padding}"
|
|
IsTabStop="False"
|
|
Grid.ColumnSpan="3"
|
|
Content="{TemplateBinding PlaceholderText}"
|
|
IsHitTestVisible="False"/>
|
|
<Button x:Name="RevealButton"
|
|
Grid.Row="1"
|
|
Style="{StaticResource RevealButtonStyle}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
IsTabStop="False"
|
|
Grid.Column="1"
|
|
Visibility="Collapsed"
|
|
FontSize="{TemplateBinding FontSize}"
|
|
VerticalAlignment="Stretch"/>
|
|
<Button
|
|
Grid.Row="1"
|
|
Style="{StaticResource GeneratorButtonStyle}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
IsTabStop="False"
|
|
Grid.Column="2"
|
|
Visibility="Visible"
|
|
FontSize="{TemplateBinding FontSize}"
|
|
VerticalAlignment="Stretch" >
|
|
<Button.Flyout>
|
|
<Flyout>
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:DataTriggerBehavior Binding="{Binding Password}" ComparisonCondition="NotEqual" Value="" >
|
|
<!--<actions:CloseFlyoutAction />-->
|
|
<core:CallMethodAction MethodName="Hide" />
|
|
</core:DataTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
<StackPanel>
|
|
<TextBlock>
|
|
<Run Text="Password Length: "/>
|
|
<Run Text="{Binding PasswordLength}" />
|
|
</TextBlock>
|
|
<Slider Value="{Binding PasswordLength, Mode=TwoWay}" Margin="0,-10,0,-20" />
|
|
<CheckBox IsChecked="{Binding UpperCasePatternSelected, Mode=TwoWay}" Content="Upper case (A, B, C, ...)"/>
|
|
<CheckBox IsChecked="{Binding LowerCasePatternSelected, Mode=TwoWay}" Content="Lower case (a, b, c, ...)"/>
|
|
<CheckBox IsChecked="{Binding DigitsPatternSelected, Mode=TwoWay}" Content="Digits (0, 1, 2, ...)"/>
|
|
<CheckBox IsChecked="{Binding MinusPatternSelected, Mode=TwoWay}" Content="Minus (-)"/>
|
|
<CheckBox IsChecked="{Binding UnderscorePatternSelected, Mode=TwoWay}" Content="Underscore (_)"/>
|
|
<CheckBox IsChecked="{Binding SpacePatternSelected, Mode=TwoWay}" Content="Space ( )"/>
|
|
<CheckBox IsChecked="{Binding SpecialPatternSelected, Mode=TwoWay}" Content="Special (!, $, %, ...)"/>
|
|
<CheckBox IsChecked="{Binding BracketsPatternSelected, Mode=TwoWay}" Content="Brackets ([], {}, (), ...)"/>
|
|
<TextBlock Text="Also add these characters:" Margin="0,5,0,0"/>
|
|
<TextBox Text="{Binding CustomChars, Mode=TwoWay}" />
|
|
<Button Content="Generate">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="Click">
|
|
<core:CallMethodAction TargetObject="{Binding}" MethodName="GeneratePassword"/>
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</Button>
|
|
</StackPanel>
|
|
</Flyout>
|
|
</Button.Flyout>
|
|
</Button>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Page.Resources>
|
|
<Page.DataContext>
|
|
<viewModels:EntryVm/>
|
|
</Page.DataContext>
|
|
<Page.BottomAppBar>
|
|
<CommandBar x:Name="CommandBar" VerticalAlignment="Center">
|
|
<CommandBar.SecondaryCommands>
|
|
<AppBarButton Icon="Save" Label="Save">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="Click">
|
|
<core:CallMethodAction TargetObject="{Binding}" MethodName="Save"/>
|
|
<core:ChangePropertyAction TargetObject="{Binding ElementName=CommandBar}" PropertyName="IsOpen" Value="False" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</AppBarButton>
|
|
<AppBarButton Icon="Setting" Label="Settings">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="Click">
|
|
<core:NavigateToPageAction TargetPage="ModernKeePass.Pages.SettingsPage" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</AppBarButton>
|
|
</CommandBar.SecondaryCommands>
|
|
<AppBarToggleButton Icon="Edit" Label="Edit" IsChecked="{Binding IsEditMode, Mode=TwoWay}">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="Click">
|
|
<core:ChangePropertyAction TargetObject="{Binding ElementName=CommandBar}" PropertyName="IsOpen" Value="False" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</AppBarToggleButton>
|
|
<AppBarButton Icon="Undo" Label="Restore" Visibility="{Binding ParentGroup.IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}" IsEnabled="{Binding PreviousGroup, Converter={StaticResource NullToBooleanConverter}}" Click="RestoreButton_Click">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="Click">
|
|
<core:CallMethodAction MethodName="UndoDelete" TargetObject="{Binding}" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</AppBarButton>
|
|
<AppBarButton Icon="Delete" Label="Delete" Click="DeleteButton_Click" />
|
|
</CommandBar>
|
|
</Page.BottomAppBar>
|
|
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
|
<Grid.ChildrenTransitions>
|
|
<TransitionCollection>
|
|
<EntranceThemeTransition/>
|
|
</TransitionCollection>
|
|
</Grid.ChildrenTransitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="50"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel x:Name="stackPanel" Grid.Row="1" Margin="20,0,0,0" >
|
|
<StackPanel.Resources>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Margin" Value="0,20,0,0"/>
|
|
</Style>
|
|
<Style TargetType="CheckBox">
|
|
<Setter Property="Margin" Value="0,20,0,0"/>
|
|
</Style>
|
|
</StackPanel.Resources>
|
|
<TextBlock TextWrapping="Wrap" Text="User name or login" FontSize="18"/>
|
|
<local:TextBoxWithButton HorizontalAlignment="Left" Text="{Binding UserName, Mode=TwoWay}" Width="350" Height="32" Style="{StaticResource TextBoxWithButtonStyle}" ButtonSymbol="">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="ButtonClick">
|
|
<actions:ClipboardAction Text="{Binding UserName}" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</local:TextBoxWithButton>
|
|
<TextBlock TextWrapping="Wrap" Text="Password" FontSize="18"/>
|
|
<PasswordBox HorizontalAlignment="Left" Password="{Binding Password, Mode=TwoWay}" Width="350" Height="32" IsPasswordRevealButtonEnabled="True" Visibility="{Binding IsRevealPassword, Converter={StaticResource InverseBooleanToVisibilityConverter}}" Style="{StaticResource PasswordBoxWithButtonStyle}" />
|
|
<local:TextBoxWithButton HorizontalAlignment="Left" Text="{Binding Password, Mode=TwoWay}" Width="350" Height="32" Visibility="{Binding IsRevealPassword, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource TextBoxWithButtonStyle}" ButtonSymbol="">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:EventTriggerBehavior EventName="ButtonClick">
|
|
<actions:ClipboardAction Text="{Binding Password}" />
|
|
</core:EventTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</local:TextBoxWithButton>
|
|
<ProgressBar Value="{Binding PasswordComplexityIndicator, ConverterParameter=0\,128, Converter={StaticResource ProgressBarLegalValuesConverter}}" Maximum="128" Width="350" HorizontalAlignment="Left" Foreground="{Binding PasswordComplexityIndicator, ConverterParameter=128, Converter={StaticResource DoubleToForegroungBrushComplexityConverter}}" />
|
|
<CheckBox HorizontalAlignment="Left" Margin="-3,0,0,0" Content="Show password" IsChecked="{Binding IsRevealPassword, Mode=TwoWay}" IsEnabled="{Binding IsRevealPasswordEnabled}" />
|
|
<TextBlock TextWrapping="Wrap" Text="URL" FontSize="18"/>
|
|
<local:TextBoxWithButton x:Name="UrlTextBox" HorizontalAlignment="Left" Text="{Binding Url, Mode=TwoWay}" Height="32" Width="350" MaxLength="256" Style="{StaticResource TextBoxWithButtonStyle}" ButtonClick="UrlButton_Click" ButtonSymbol="" />
|
|
<TextBlock TextWrapping="Wrap" Text="Notes" FontSize="18"/>
|
|
<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Notes, Mode=TwoWay}" Width="350" Height="200" AcceptsReturn="True" IsSpellCheckEnabled="True" />
|
|
<CheckBox FontSize="18" IsChecked="{Binding HasExpirationDate, Mode=TwoWay}" Content="Expiration date"/>
|
|
<StackPanel Orientation="Horizontal" IsHitTestVisible="{Binding HasExpirationDate}">
|
|
<SymbolIcon Symbol="Important" Foreground="DarkRed" Visibility="{Binding HasExpired, Converter={StaticResource BooleanToVisibilityConverter}}">
|
|
<ToolTipService.ToolTip>
|
|
<ToolTip Content="Password has expired" />
|
|
</ToolTipService.ToolTip>
|
|
</SymbolIcon>
|
|
<DatePicker Margin="0,0,20,0" Date="{Binding ExpiryDate, Mode=TwoWay}" />
|
|
<TimePicker Time="{Binding ExpiryTime, Mode=TwoWay}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
|
|
<!-- Bouton Précédent et titre de la page -->
|
|
<Grid Grid.Row="0" Background="{ThemeResource AppBarBackgroundThemeBrush}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="60"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="400"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Button Grid.Column="0"
|
|
x:Name="BackButton"
|
|
Command="{Binding NavigationHelper.GoBackCommand, ElementName=PageRoot}"
|
|
Height="50"
|
|
Width="50"
|
|
VerticalAlignment="Center"
|
|
AutomationProperties.Name="Back"
|
|
AutomationProperties.AutomationId="BackButton"
|
|
AutomationProperties.ItemType="Navigation Button"
|
|
Style="{StaticResource NoBorderButtonStyle}">
|
|
<SymbolIcon Symbol="Back" />
|
|
</Button>
|
|
<StackPanel Grid.Column="1" >
|
|
<TextBox
|
|
x:Name="TitleTextBox"
|
|
Text="{Binding Name, Mode=TwoWay}"
|
|
Foreground="{ThemeResource DefaultTextForegroundThemeBrush}"
|
|
Background="Transparent"
|
|
IsHitTestVisible="{Binding IsEditMode}"
|
|
BorderThickness="0"
|
|
FontSize="20"
|
|
FontWeight="SemiBold"
|
|
TextWrapping="NoWrap"
|
|
VerticalAlignment="Center"
|
|
PlaceholderText="New entry name...">
|
|
<interactivity:Interaction.Behaviors>
|
|
<core:DataTriggerBehavior Binding="{Binding IsEditMode}" Value="True">
|
|
<actions:SetupFocusAction TargetObject="{Binding ElementName=TitleTextBox}" />
|
|
</core:DataTriggerBehavior>
|
|
</interactivity:Interaction.Behaviors>
|
|
</TextBox>
|
|
<TextBlock FontSize="12" Text="{Binding Path}" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Grid>
|
|
</Page> |