diff --git a/ModernKeePass/App.xaml.cs b/ModernKeePass/App.xaml.cs index 5432080..4e9bba6 100644 --- a/ModernKeePass/App.xaml.cs +++ b/ModernKeePass/App.xaml.cs @@ -191,7 +191,9 @@ namespace ModernKeePass } catch (Exception exception) { +#if DEBUG ToastNotificationHelper.ShowErrorToast(exception); +#endif } deferral.Complete(); } diff --git a/ModernKeePass/Interfaces/IDatabaseService.cs b/ModernKeePass/Interfaces/IDatabaseService.cs index d634e2b..f4b680e 100644 --- a/ModernKeePass/Interfaces/IDatabaseService.cs +++ b/ModernKeePass/Interfaces/IDatabaseService.cs @@ -15,7 +15,7 @@ namespace ModernKeePass.Interfaces GroupVm RootGroup { get; set; } GroupVm RecycleBin { get; set; } StorageFile DatabaseFile { get; set; } - CompositeKey CompositeKey { get; } + CompositeKey CompositeKey { get; set; } PwUuid DataCipher { get; set; } PwCompressionAlgorithm CompressionAlgorithm { get; set; } KdfParameters KeyDerivation { get; set; } @@ -26,10 +26,9 @@ namespace ModernKeePass.Interfaces Task Open(CompositeKey key, bool createNew = false); Task ReOpen(); - void UpdateCompositeKey(CompositeKey key); void Save(); void Save(StorageFile file); - void CreateRecycleBin(); + void CreateRecycleBin(string title); void AddDeletedItem(PwUuid id); Task Close(bool releaseFile = true); } diff --git a/ModernKeePass/Interfaces/IPwEntity.cs b/ModernKeePass/Interfaces/IPwEntity.cs index cdd7c09..eea0bc5 100644 --- a/ModernKeePass/Interfaces/IPwEntity.cs +++ b/ModernKeePass/Interfaces/IPwEntity.cs @@ -34,6 +34,6 @@ namespace ModernKeePass.Interfaces /// /// Delete from ViewModel /// - void MarkForDelete(); + void MarkForDelete(string recycleBinTitle); } } \ No newline at end of file diff --git a/ModernKeePass/Services/DatabaseService.cs b/ModernKeePass/Services/DatabaseService.cs index 8f8ffe5..ad7f2f5 100644 --- a/ModernKeePass/Services/DatabaseService.cs +++ b/ModernKeePass/Services/DatabaseService.cs @@ -32,7 +32,7 @@ namespace ModernKeePass.Services set { _recycleBin = value; - _pwDatabase.RecycleBinUuid = _recycleBin.IdUuid; + _pwDatabase.RecycleBinUuid = _recycleBin?.IdUuid; } } @@ -57,7 +57,11 @@ namespace ModernKeePass.Services } } - public CompositeKey CompositeKey => _compositeKey; + public CompositeKey CompositeKey + { + get { return _compositeKey; } + set { _compositeKey = value; } + } public PwUuid DataCipher { @@ -137,8 +141,7 @@ namespace ModernKeePass.Services CreationCollisionOption.FailIfExists); Save(backupFile); } - - //Status = (int)DatabaseStatus.Opened; + RootGroup = new GroupVm(_pwDatabase.RootGroup, null, RecycleBinEnabled ? _pwDatabase.RecycleBinUuid : null); } catch (InvalidCompositeKeyException ex) @@ -215,18 +218,13 @@ namespace ModernKeePass.Services _pwDatabase.DeletedObjects.Add(new PwDeletedObject(id, DateTime.UtcNow)); } - public void CreateRecycleBin() + public void CreateRecycleBin(string title) { - RecycleBin = RootGroup.AddNewGroup("Recycle bin"); + RecycleBin = RootGroup.AddNewGroup(title); RecycleBin.IsSelected = true; RecycleBin.IconSymbol = Symbol.Delete; } - - public void UpdateCompositeKey(CompositeKey key) - { - _pwDatabase.MasterKey = key; - } - + private void CreateSampleData() { _pwDatabase.RootGroup.AddGroup(new PwGroup(true, true, "Banking", PwIcon.Count), true); diff --git a/ModernKeePass/Strings/en-US/CodeBehind.resw b/ModernKeePass/Strings/en-US/CodeBehind.resw index d13af0e..20df5e0 100644 --- a/ModernKeePass/Strings/en-US/CodeBehind.resw +++ b/ModernKeePass/Strings/en-US/CodeBehind.resw @@ -204,9 +204,6 @@ Are you sure you want to delete this entry? - - < New entry > - Entry moved to the Recycle bin @@ -222,9 +219,6 @@ Are you sure you want to delete the whole group and all its entries? - - < New group > - Group moved to the Recycle bin @@ -276,4 +270,7 @@ Saving + + Recycle Bin + \ No newline at end of file diff --git a/ModernKeePass/Strings/en-US/Resources.resw b/ModernKeePass/Strings/en-US/Resources.resw index de9beda..3c24a2b 100644 --- a/ModernKeePass/Strings/en-US/Resources.resw +++ b/ModernKeePass/Strings/en-US/Resources.resw @@ -214,10 +214,10 @@ Filter... - < New group > + New group - < New group > + New group Search... diff --git a/ModernKeePass/Strings/fr-FR/CodeBehind.resw b/ModernKeePass/Strings/fr-FR/CodeBehind.resw index ac33305..3259e52 100644 --- a/ModernKeePass/Strings/fr-FR/CodeBehind.resw +++ b/ModernKeePass/Strings/fr-FR/CodeBehind.resw @@ -204,10 +204,6 @@ Êtes-vous sûr de vouloir supprimer cette entrée ? - - < Nouvelle entrée > - Unused - Entrée placée dans la Corbeille @@ -223,9 +219,6 @@ Êtes-vous sûr de vouloir supprimer ce group et toutes ses entrées ? - - < Nouveau groupe > - Groupe placé dans la Corbeille @@ -277,4 +270,7 @@ Sauvegardes + + Corbeille + \ No newline at end of file diff --git a/ModernKeePass/Strings/fr-FR/Resources.resw b/ModernKeePass/Strings/fr-FR/Resources.resw index 5fc80b9..a8a0160 100644 --- a/ModernKeePass/Strings/fr-FR/Resources.resw +++ b/ModernKeePass/Strings/fr-FR/Resources.resw @@ -214,10 +214,10 @@ Filtrer... - < Nouveau groupe > + Nouveau groupe - < Nouveau groupe > + Nouveau groupe Rechercher... diff --git a/ModernKeePass/ViewModels/CompositeKeyVm.cs b/ModernKeePass/ViewModels/CompositeKeyVm.cs index dc8bdf1..318da51 100644 --- a/ModernKeePass/ViewModels/CompositeKeyVm.cs +++ b/ModernKeePass/ViewModels/CompositeKeyVm.cs @@ -2,7 +2,6 @@ using System.Text; using System.Threading.Tasks; using Windows.Storage; -using Windows.UI.Xaml; using ModernKeePass.Common; using ModernKeePass.Interfaces; using ModernKeePass.Services; @@ -154,7 +153,7 @@ namespace ModernKeePass.ViewModels public void UpdateKey() { - Database.UpdateCompositeKey(CreateCompositeKey()); + Database.CompositeKey = CreateCompositeKey(); UpdateStatus(_resource.GetResourceValue("CompositeKeyUpdated"), StatusTypes.Success); } diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs index 722c00b..9b5349f 100644 --- a/ModernKeePass/ViewModels/EntryVm.cs +++ b/ModernKeePass/ViewModels/EntryVm.cs @@ -219,10 +219,10 @@ namespace ModernKeePass.ViewModels _pwEntry?.Strings.Set(key, new ProtectedString(true, newValue)); } - public void MarkForDelete() + public void MarkForDelete(string recycleBinTitle) { if (_database.RecycleBinEnabled && _database.RecycleBin?.IdUuid == null) - _database.CreateRecycleBin(); + _database.CreateRecycleBin(recycleBinTitle); Move(_database.RecycleBinEnabled && !ParentGroup.IsSelected ? _database.RecycleBin : null); } diff --git a/ModernKeePass/ViewModels/GroupVm.cs b/ModernKeePass/ViewModels/GroupVm.cs index fed27b8..10de645 100644 --- a/ModernKeePass/ViewModels/GroupVm.cs +++ b/ModernKeePass/ViewModels/GroupVm.cs @@ -153,10 +153,10 @@ namespace ModernKeePass.ViewModels return newEntry; } - public void MarkForDelete() + public void MarkForDelete(string recycleBinTitle) { if (_database.RecycleBinEnabled && _database.RecycleBin?.IdUuid == null) - _database.CreateRecycleBin(); + _database.CreateRecycleBin(recycleBinTitle); Move(_database.RecycleBinEnabled && !IsSelected ? _database.RecycleBin : null); } @@ -165,7 +165,6 @@ namespace ModernKeePass.ViewModels Move(PreviousGroup); } - [DatabaseChanged] public void Move(GroupVm destination) { @@ -194,7 +193,6 @@ namespace ModernKeePass.ViewModels _database.Save(); } - [DatabaseChanged] public void SortEntries() { @@ -210,7 +208,6 @@ namespace ModernKeePass.ViewModels } } - [DatabaseChanged] public void SortGroups() { diff --git a/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs b/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs index c681746..486d7bd 100644 --- a/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs +++ b/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs @@ -27,6 +27,15 @@ namespace ModernKeePass.ViewModels } } + public bool IsNewRecycleBin + { + get { return _database.RecycleBin == null; } + set + { + if (value) _database.RecycleBin = null; + } + } + public ObservableCollection Groups { get; set; } public IEnumerable Ciphers @@ -73,7 +82,7 @@ namespace ModernKeePass.ViewModels get { return Groups.FirstOrDefault(g => g.IsSelected); } set { - if (_selectedItem == value) return; + if (_selectedItem == value || IsNewRecycleBin) return; if (_selectedItem != null) { _selectedItem.IsSelected = false; diff --git a/ModernKeePass/Views/EntryDetailPage.xaml.cs b/ModernKeePass/Views/EntryDetailPage.xaml.cs index 62e0755..2e44338 100644 --- a/ModernKeePass/Views/EntryDetailPage.xaml.cs +++ b/ModernKeePass/Views/EntryDetailPage.xaml.cs @@ -81,7 +81,7 @@ namespace ModernKeePass.Views resource.GetResourceValue("EntityDeleteCancelButton"), a => { ToastNotificationHelper.ShowMovedToast(Model, resource.GetResourceValue("EntityDeleting"), text); - Model.MarkForDelete(); + Model.MarkForDelete(resource.GetResourceValue("RecycleBinTitle")); if (Frame.CanGoBack) Frame.GoBack(); }, null); } diff --git a/ModernKeePass/Views/GroupDetailPage.xaml.cs b/ModernKeePass/Views/GroupDetailPage.xaml.cs index e9c4870..ae944cc 100644 --- a/ModernKeePass/Views/GroupDetailPage.xaml.cs +++ b/ModernKeePass/Views/GroupDetailPage.xaml.cs @@ -117,7 +117,7 @@ namespace ModernKeePass.Views resource.GetResourceValue("EntityDeleteCancelButton"), a => { ToastNotificationHelper.ShowMovedToast(Model, resource.GetResourceValue("EntityDeleting"), text); - Model.MarkForDelete(); + Model.MarkForDelete(resource.GetResourceValue("RecycleBinTitle")); if (Frame.CanGoBack) Frame.GoBack(); }, null); } diff --git a/ModernKeePass/Views/SettingsPageFrames/SettingsDatabasePage.xaml b/ModernKeePass/Views/SettingsPageFrames/SettingsDatabasePage.xaml index 2d064ef..443fdc9 100644 --- a/ModernKeePass/Views/SettingsPageFrames/SettingsDatabasePage.xaml +++ b/ModernKeePass/Views/SettingsPageFrames/SettingsDatabasePage.xaml @@ -22,7 +22,7 @@ - + diff --git a/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs b/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs index 24ff962..fa809bd 100644 --- a/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs +++ b/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs @@ -19,7 +19,11 @@ namespace ModernKeePassApp.Test.Mock public StorageFile DatabaseFile { get; set; } - public CompositeKey CompositeKey => _compositeKey; + public CompositeKey CompositeKey + { + get { return _compositeKey; } + set { _compositeKey = value; } + } public PwUuid DataCipher { get; set; } @@ -55,7 +59,7 @@ namespace ModernKeePassApp.Test.Mock }); } - public void CreateRecycleBin() + public void CreateRecycleBin(string title) { throw new NotImplementedException(); } @@ -84,10 +88,5 @@ namespace ModernKeePassApp.Test.Mock { throw new NotImplementedException(); } - - public void UpdateCompositeKey(CompositeKey key) - { - throw new NotImplementedException(); - } } } diff --git a/ModernKeePassApp.Test/Mock/ResourceServiceMock.cs b/ModernKeePassApp.Test/Mock/ResourceServiceMock.cs index 66d70bb..548a91c 100644 --- a/ModernKeePassApp.Test/Mock/ResourceServiceMock.cs +++ b/ModernKeePassApp.Test/Mock/ResourceServiceMock.cs @@ -1,5 +1,4 @@ -using System; -using ModernKeePass.Interfaces; +using ModernKeePass.Interfaces; namespace ModernKeePassApp.Test.Mock {