From b456e56789e28dab79e4c6b22e2e1f4ae748fcf6 Mon Sep 17 00:00:00 2001 From: BONNEVILLE Geoffroy Date: Mon, 18 Jun 2018 18:40:00 +0200 Subject: [PATCH] Making modifications in an Entry creates a new History entry --- ModernKeePass/ViewModels/EntryVm.cs | 20 ++++++++++++++++---- ModernKeePass/Views/EntryDetailPage.xaml.cs | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs index d19240f..edd5e93 100644 --- a/ModernKeePass/ViewModels/EntryVm.cs +++ b/ModernKeePass/ViewModels/EntryVm.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Globalization; using ModernKeePass.Interfaces; using ModernKeePass.Services; using ModernKeePassLib; @@ -148,11 +147,12 @@ namespace ModernKeePass.ViewModels { get { - var history = new List {this}; + var history = new Stack(); foreach (var historyEntry in _pwEntry.History) { - history.Add(new EntryVm(historyEntry, ParentGroup) {IsSelected = false}); + history.Push(new EntryVm(historyEntry, ParentGroup) {IsSelected = false}); } + history.Push(this); return history; } @@ -164,6 +164,7 @@ namespace ModernKeePass.ViewModels private readonly IDatabaseService _database; private readonly IResourceService _resource; private bool _isEditMode; + private bool _isDirty; private bool _isRevealPassword; private double _passwordLength = 25; private bool _isVisible = true; @@ -221,7 +222,13 @@ namespace ModernKeePass.ViewModels private void SetEntryValue(string key, string newValue) { + if (!_isDirty) + { + _pwEntry.Touch(true); + _pwEntry?.CreateBackup(null); + } _pwEntry?.Strings.Set(key, new ProtectedString(true, newValue)); + _isDirty = true; } public void MarkForDelete(string recycleBinTitle) @@ -264,10 +271,15 @@ namespace ModernKeePass.ViewModels { return _pwEntry; } - + public void Reset() + { + _isDirty = false; + } + public override string ToString() { return IsSelected ? _resource.GetResourceValue("EntryCurrent") : _pwEntry.LastModificationTime.ToString("g"); } + } } diff --git a/ModernKeePass/Views/EntryDetailPage.xaml.cs b/ModernKeePass/Views/EntryDetailPage.xaml.cs index bae5996..4ceafdf 100644 --- a/ModernKeePass/Views/EntryDetailPage.xaml.cs +++ b/ModernKeePass/Views/EntryDetailPage.xaml.cs @@ -50,6 +50,7 @@ namespace ModernKeePass.Views protected override void OnNavigatedFrom(NavigationEventArgs e) { NavigationHelper.OnNavigatedFrom(e); + Model.Reset(); } #endregion