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
{