diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml index 04044a9..c8b0cf5 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml @@ -1,11 +1,11 @@ - - + diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs index 727e76e..f48c6e8 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs @@ -6,6 +6,7 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Input; using ModernKeePass.Common; using ModernKeePass.Events; +using ModernKeePassLib.Cryptography; // Pour en savoir plus sur le modèle d'élément Contrôle utilisateur, consultez la page http://go.microsoft.com/fwlink/?LinkId=234236 @@ -23,7 +24,19 @@ namespace ModernKeePass.Controls "CreateNew", typeof(bool), typeof(OpenDatabaseUserControl), - new PropertyMetadata(null, (o, args) => { })); + new PropertyMetadata(false, (o, args) => { })); + + public string Password + { + get { return (string)GetValue(PasswordProperty); } + set { SetValue(PasswordProperty, value); } + } + public static readonly DependencyProperty PasswordProperty = + DependencyProperty.Register( + "Password", + typeof(string), + typeof(OpenDatabaseUserControl), + new PropertyMetadata(string.Empty, (o, args) => { })); public OpenDatabaseUserControl() { diff --git a/ModernKeePass/Converters/ProgressBarLegalValuesConverter.cs b/ModernKeePass/Converters/ProgressBarLegalValuesConverter.cs new file mode 100644 index 0000000..b6b84f4 --- /dev/null +++ b/ModernKeePass/Converters/ProgressBarLegalValuesConverter.cs @@ -0,0 +1,27 @@ +using System; +using Windows.UI.Xaml.Data; + +namespace ModernKeePass.Converters +{ + public class ProgressBarLegalValuesConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + var legalValuesOptionString = parameter as string; + var legalValuesOptions = legalValuesOptionString?.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (legalValuesOptions == null || legalValuesOptions.Length != 2) return 0; + + var minValue = double.Parse(legalValuesOptions[0]); + var maxValue = double.Parse(legalValuesOptions[1]); + var count = value is double ? (double)value : 0; + if (count > maxValue) return maxValue; + if (count < minValue) return minValue; + return count; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } +} diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj index 91c5dc2..4ebea25 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -127,6 +127,7 @@ + @@ -163,6 +164,7 @@ + diff --git a/ModernKeePass/Pages/AboutPage.xaml b/ModernKeePass/Pages/AboutPage.xaml index 15447b0..cdd4f63 100644 --- a/ModernKeePass/Pages/AboutPage.xaml +++ b/ModernKeePass/Pages/AboutPage.xaml @@ -2,7 +2,6 @@ x:Class="ModernKeePass.Pages.AboutPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ModernKeePass.Pages" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> diff --git a/ModernKeePass/Pages/AboutPage.xaml.cs b/ModernKeePass/Pages/AboutPage.xaml.cs index e171fa9..56c46e9 100644 --- a/ModernKeePass/Pages/AboutPage.xaml.cs +++ b/ModernKeePass/Pages/AboutPage.xaml.cs @@ -1,30 +1,15 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; - -// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 +// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 namespace ModernKeePass.Pages { /// /// An empty page that can be used on its own or navigated to within a Frame. /// - public sealed partial class AboutPage : Page + public sealed partial class AboutPage { public AboutPage() { - this.InitializeComponent(); + InitializeComponent(); } } } diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml b/ModernKeePass/Pages/NewDatabasePage.xaml index f857221..b023095 100644 --- a/ModernKeePass/Pages/NewDatabasePage.xaml +++ b/ModernKeePass/Pages/NewDatabasePage.xaml @@ -9,17 +9,24 @@ xmlns:viewModels="using:ModernKeePass.ViewModels" mc:Ignorable="d"> - + + - + - + New Create a new password database to the location of your chosing. - - + + + + + Password complexity + + + diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml.cs b/ModernKeePass/Pages/NewDatabasePage.xaml.cs index c0dc6dd..7cbf989 100644 --- a/ModernKeePass/Pages/NewDatabasePage.xaml.cs +++ b/ModernKeePass/Pages/NewDatabasePage.xaml.cs @@ -18,7 +18,7 @@ namespace ModernKeePass.Pages { private Frame _mainFrame; - public OpenVm Model => (OpenVm)DataContext; + public NewVm Model => (NewVm)DataContext; public NewDatabasePage() { diff --git a/ModernKeePass/Pages/OpenDatabasePage.xaml b/ModernKeePass/Pages/OpenDatabasePage.xaml index 655fe11..c132f87 100644 --- a/ModernKeePass/Pages/OpenDatabasePage.xaml +++ b/ModernKeePass/Pages/OpenDatabasePage.xaml @@ -21,7 +21,11 @@ Open an existing password database from your PC. Open an existing password database from an Internet location (not yet implemented). - - + + + + + + \ No newline at end of file diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml b/ModernKeePass/Pages/SaveDatabasePage.xaml index 8e7d74a..9f289b9 100644 --- a/ModernKeePass/Pages/SaveDatabasePage.xaml +++ b/ModernKeePass/Pages/SaveDatabasePage.xaml @@ -11,6 +11,7 @@ + Save This will save and close the currently opened database. diff --git a/ModernKeePass/ViewModels/NewVm.cs b/ModernKeePass/ViewModels/NewVm.cs new file mode 100644 index 0000000..da2cd89 --- /dev/null +++ b/ModernKeePass/ViewModels/NewVm.cs @@ -0,0 +1,21 @@ +using ModernKeePassLib.Cryptography; + +namespace ModernKeePass.ViewModels +{ + public class NewVm : OpenVm + { + private string _password = string.Empty; + + public string Password + { + get { return _password; } + set + { + _password = value; + NotifyPropertyChanged("PasswordComplexityIndicator"); + } + } + + public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password.ToCharArray()); + } +} diff --git a/ModernKeePass/ViewModels/OpenVm.cs b/ModernKeePass/ViewModels/OpenVm.cs index 51b4e13..4d69b93 100644 --- a/ModernKeePass/ViewModels/OpenVm.cs +++ b/ModernKeePass/ViewModels/OpenVm.cs @@ -27,7 +27,7 @@ namespace ModernKeePass.ViewModels public event PropertyChangedEventHandler PropertyChanged; - private void NotifyPropertyChanged(string propertyName) + protected void NotifyPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } diff --git a/ModernKeePass/ViewModels/RecentVm.cs b/ModernKeePass/ViewModels/RecentVm.cs index 03d0925..a98cc78 100644 --- a/ModernKeePass/ViewModels/RecentVm.cs +++ b/ModernKeePass/ViewModels/RecentVm.cs @@ -9,7 +9,7 @@ namespace ModernKeePass.ViewModels { private RecentItemVm _selectedItem; private ObservableCollection _recentItems = new ObservableCollection(); - + public ObservableCollection RecentItems { get { return _recentItems; }