From 7bb78fd374f00553f73fcfdbfbfc3ed5ebb265db Mon Sep 17 00:00:00 2001 From: Geoffroy Bonneville Date: Wed, 18 Oct 2017 13:57:10 +0200 Subject: [PATCH] WIP Entry expiration dates --- .../Common/ToastNotificationHelper.cs | 2 +- .../Controls/OpenDatabaseUserControl.xaml | 10 +----- ...bleToForegroungBrushComplexityConverter.cs | 32 +++++++++++++++++++ ModernKeePass/ModernKeePass.csproj | 1 + ModernKeePass/Pages/EntryDetailPage.xaml | 18 +++++------ ModernKeePass/Pages/NewDatabasePage.xaml | 10 ++---- ModernKeePass/ViewModels/EntryVm.cs | 23 +++++++++++++ ModernKeePass/ViewModels/NewVm.cs | 2 +- 8 files changed, 69 insertions(+), 29 deletions(-) create mode 100644 ModernKeePass/Converters/DoubleToForegroungBrushComplexityConverter.cs diff --git a/ModernKeePass/Common/ToastNotificationHelper.cs b/ModernKeePass/Common/ToastNotificationHelper.cs index ab8127f..eeee286 100644 --- a/ModernKeePass/Common/ToastNotificationHelper.cs +++ b/ModernKeePass/Common/ToastNotificationHelper.cs @@ -66,7 +66,7 @@ namespace ModernKeePass.Common */ var notificationXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02); var toastElements = notificationXml.GetElementsByTagName("text"); - toastElements[0].AppendChild(notificationXml.CreateTextNode($"{entityType} deleted")); + toastElements[0].AppendChild(notificationXml.CreateTextNode($"{entityType} {entity.Name} deleted")); toastElements[1].AppendChild(notificationXml.CreateTextNode("Click me to undo")); var toastNode = notificationXml.SelectSingleNode("/toast"); ((XmlElement)toastNode)?.SetAttribute("launch", new QueryString diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml index c8b0cf5..bbcd47b 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml @@ -36,26 +36,18 @@ - - - - + - - - diff --git a/ModernKeePass/Converters/DoubleToForegroungBrushComplexityConverter.cs b/ModernKeePass/Converters/DoubleToForegroungBrushComplexityConverter.cs new file mode 100644 index 0000000..785bc59 --- /dev/null +++ b/ModernKeePass/Converters/DoubleToForegroungBrushComplexityConverter.cs @@ -0,0 +1,32 @@ +using System; +using Windows.UI; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Media; + +namespace ModernKeePass.Converters +{ + public class DoubleToForegroungBrushComplexityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + try + { + var currentValue = (double) value; + var maxValue = double.Parse(parameter as string); + var green = System.Convert.ToByte(currentValue / maxValue * byte.MaxValue); + var red = (byte) (byte.MaxValue - green); + return new SolidColorBrush(Color.FromArgb(255, red, green, 0)); + } + catch (OverflowException) + { + return new SolidColorBrush(Color.FromArgb(255, 0, byte.MaxValue, 0)); + } + + } + + 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 bde2dd1..b74dca4 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -126,6 +126,7 @@ + diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml index ff44f20..c309abb 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml +++ b/ModernKeePass/Pages/EntryDetailPage.xaml @@ -41,10 +41,6 @@ - @@ -57,10 +53,6 @@ - - - @@ -343,8 +335,6 @@ Space ( ) Special (!, $, %, ...) Brackets ([], {}, (), ...) - Additional characters: - @@ -377,6 +367,9 @@ + @@ -388,6 +381,11 @@ + Expiration date + + + + diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml b/ModernKeePass/Pages/NewDatabasePage.xaml index 175f1ed..a75b2db 100644 --- a/ModernKeePass/Pages/NewDatabasePage.xaml +++ b/ModernKeePass/Pages/NewDatabasePage.xaml @@ -11,6 +11,7 @@ + @@ -25,14 +26,7 @@ Password complexity - - - - - - - - + diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs index e133710..2cbd6d5 100644 --- a/ModernKeePass/ViewModels/EntryVm.cs +++ b/ModernKeePass/ViewModels/EntryVm.cs @@ -19,6 +19,7 @@ namespace ModernKeePass.ViewModels public System.Drawing.Color? ForegroundColor => Entry?.ForegroundColor; public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password); + public double PasswordLength { get; set; } = 25; public bool UpperCasePatternSelected { get; set; } = true; public bool LowerCasePatternSelected { get; set; } = true; @@ -72,11 +73,23 @@ namespace ModernKeePass.ViewModels get { if (Entry == null) return Symbol.Add; + //if () var result = PwIconToSegoeMapping.GetSymbolFromIcon(Entry.IconId); return result == Symbol.More ? Symbol.Permissions : result; } } + public DateTimeOffset ExpiryDate + { + get { return new DateTimeOffset(Entry.ExpiryTime.Date); } + set { Entry.ExpiryTime = value.DateTime; } + } + public TimeSpan ExpiryTime + { + get { return Entry.ExpiryTime.TimeOfDay; } + set { Entry.ExpiryTime = Entry.ExpiryTime.Date.Add(value); } + } + public bool IsEditMode { get { return _isEditMode; } @@ -96,11 +109,21 @@ namespace ModernKeePass.ViewModels NotifyPropertyChanged("IsRevealPassword"); } } + public bool HasExpirationDate + { + get { return Entry.Expires; } + set + { + Entry.Expires = value; + NotifyPropertyChanged("HasExpirationDate"); + } + } public event PropertyChangedEventHandler PropertyChanged; private bool _isEditMode; private bool _isRevealPassword; + private void NotifyPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); diff --git a/ModernKeePass/ViewModels/NewVm.cs b/ModernKeePass/ViewModels/NewVm.cs index da2cd89..d599ede 100644 --- a/ModernKeePass/ViewModels/NewVm.cs +++ b/ModernKeePass/ViewModels/NewVm.cs @@ -6,6 +6,7 @@ namespace ModernKeePass.ViewModels { private string _password = string.Empty; + public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password.ToCharArray()); public string Password { get { return _password; } @@ -16,6 +17,5 @@ namespace ModernKeePass.ViewModels } } - public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password.ToCharArray()); } }