From 10a4941b262bdb4c9ce0a91a6defc17360755417 Mon Sep 17 00:00:00 2001 From: Geoffroy Bonneville Date: Tue, 7 Nov 2017 18:45:35 +0100 Subject: [PATCH] Major OpenDatabaseUserControl refactor, now has proper ViewModel Status text and password box border colors are updated according to database status Update composite key in Settings work Some code cleanup --- ModernKeePass.sln | 2 +- ModernKeePass/.gitignore | 1 + ModernKeePass/Common/DatabaseHelper.cs | 17 +-- .../Common/NotifyPropertyChangedBase.cs | 2 +- .../Controls/OpenDatabaseUserControl.xaml | 34 +++--- .../Controls/OpenDatabaseUserControl.xaml.cs | 59 +++------ .../DiscreteIntToSolidColorBrushConverter.cs | 27 +++++ ...cs => DoubleToSolidColorBrushConverter.cs} | 3 +- ...KeePass.csproj => ModernKeePassApp.csproj} | 15 ++- .../ModernKeePassApp.csproj.DotSettings | 3 + ModernKeePass/Pages/EntryDetailPage.xaml | 2 +- .../Pages/MainPageFrames/NewDatabasePage.xaml | 2 +- .../MainPageFrames/RecentDatabasesPage.xaml | 2 +- .../RecentDatabasesPage.xaml.cs | 20 +--- .../SettingsSecurityPage.xaml | 14 +++ .../SettingsSecurityPage.xaml.cs | 15 +++ ModernKeePass/ViewModels/CompositeKeyVm.cs | 113 ++++++++++++++++++ ModernKeePass/ViewModels/EntryVm.cs | 2 +- ModernKeePass/ViewModels/GroupVm.cs | 2 +- .../ViewModels/Items/RecentItemVm.cs | 16 +-- .../{ => Items}/SettingsDatabaseVm.cs | 2 +- ModernKeePass/ViewModels/OpenVm.cs | 6 +- ModernKeePass/ViewModels/RecentVm.cs | 7 +- .../{Items/SettingsVM.cs => SettingsVm.cs} | 1 + 24 files changed, 261 insertions(+), 106 deletions(-) create mode 100644 ModernKeePass/Converters/DiscreteIntToSolidColorBrushConverter.cs rename ModernKeePass/Converters/{DoubleToForegroungBrushComplexityConverter.cs => DoubleToSolidColorBrushConverter.cs} (91%) rename ModernKeePass/{ModernKeePass.csproj => ModernKeePassApp.csproj} (96%) create mode 100644 ModernKeePass/ModernKeePassApp.csproj.DotSettings create mode 100644 ModernKeePass/Pages/SettingsPageFrames/SettingsSecurityPage.xaml create mode 100644 ModernKeePass/Pages/SettingsPageFrames/SettingsSecurityPage.xaml.cs create mode 100644 ModernKeePass/ViewModels/CompositeKeyVm.cs rename ModernKeePass/ViewModels/{ => Items}/SettingsDatabaseVm.cs (98%) rename ModernKeePass/ViewModels/{Items/SettingsVM.cs => SettingsVm.cs} (91%) diff --git a/ModernKeePass.sln b/ModernKeePass.sln index c3365f9..c09d8de 100644 --- a/ModernKeePass.sln +++ b/ModernKeePass.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernKeePass", "ModernKeePass\ModernKeePass.csproj", "{A0CFC681-769B-405A-8482-0CDEE595A91F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernKeePassApp", "ModernKeePass\ModernKeePassApp.csproj", "{A0CFC681-769B-405A-8482-0CDEE595A91F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernKeePassLib", "ModernKeePassLib\ModernKeePassLib.csproj", "{2E710089-9559-4967-846C-E763DD1F3ACB}" EndProject diff --git a/ModernKeePass/.gitignore b/ModernKeePass/.gitignore index 246f7e8..ef1d66c 100644 --- a/ModernKeePass/.gitignore +++ b/ModernKeePass/.gitignore @@ -34,3 +34,4 @@ Translation/TrlUtil.vshost.exe.manifest *.nupkg .vs/ /UpgradeLog.htm +ModernKeePass_StoreKey.pfx \ No newline at end of file diff --git a/ModernKeePass/Common/DatabaseHelper.cs b/ModernKeePass/Common/DatabaseHelper.cs index 7ab480c..b476b91 100644 --- a/ModernKeePass/Common/DatabaseHelper.cs +++ b/ModernKeePass/Common/DatabaseHelper.cs @@ -53,8 +53,6 @@ namespace ModernKeePass.Common } } - public StorageFile KeyFile { get; set; } - public PwUuid DataCipher { get { return _pwDatabase.DataCipherUuid; } @@ -72,20 +70,18 @@ namespace ModernKeePass.Common get { return _pwDatabase.KdfParameters; } set { _pwDatabase.KdfParameters = value; } } - + /// /// Open a KeePass database /// - /// The database password + /// The database composite key /// True to create a new database before opening it /// An error message, if any - public string Open(string password, bool createNew = false) + public string Open(CompositeKey key, bool createNew = false) { - var key = new CompositeKey(); try { - if (password != null) key.AddUserKey(new KcpPassword(password)); - if (KeyFile != null) key.AddUserKey(new KcpKeyFile(IOConnectionInfo.FromFile(KeyFile))); + if (key == null) return "No composite key"; var ioConnection = IOConnectionInfo.FromFile(DatabaseFile); if (createNew) _pwDatabase.New(ioConnection, key); else _pwDatabase.Open(ioConnection, key, new NullStatusLogger()); @@ -152,5 +148,10 @@ namespace ModernKeePass.Common RecycleBin.IsSelected = true; RecycleBin.IconSymbol = Symbol.Delete; } + + public void UpdateCompositeKey(CompositeKey key) + { + _pwDatabase.MasterKey = key; + } } } diff --git a/ModernKeePass/Common/NotifyPropertyChangedBase.cs b/ModernKeePass/Common/NotifyPropertyChangedBase.cs index 53751dd..ed71053 100644 --- a/ModernKeePass/Common/NotifyPropertyChangedBase.cs +++ b/ModernKeePass/Common/NotifyPropertyChangedBase.cs @@ -8,7 +8,7 @@ namespace ModernKeePass.Common { public event PropertyChangedEventHandler PropertyChanged; - protected void OnPropertyChanged([CallerMemberName] string propertyName = "") + protected void OnPropertyChanged(string propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml index 0132d17..b2766fb 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml @@ -8,16 +8,22 @@ xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:actions="using:ModernKeePass.Actions" xmlns:converters="using:ModernKeePass.Converters" + xmlns:viewModels="using:ModernKeePass.ViewModels" mc:Ignorable="d" d:DesignHeight="120" d:DesignWidth="550" > - + + - + + + + + @@ -27,22 +33,22 @@ - - + + - + - - - -