RecycleBin now uses resources

RecycleBin bugs correction
This commit is contained in:
BONNEVILLE Geoffroy
2018-03-12 17:30:03 +01:00
parent 56129253d9
commit 4aefbcb8b9
17 changed files with 50 additions and 55 deletions

View File

@@ -191,7 +191,9 @@ namespace ModernKeePass
}
catch (Exception exception)
{
#if DEBUG
ToastNotificationHelper.ShowErrorToast(exception);
#endif
}
deferral.Complete();
}

View File

@@ -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);
}

View File

@@ -34,6 +34,6 @@ namespace ModernKeePass.Interfaces
/// <summary>
/// Delete from ViewModel
/// </summary>
void MarkForDelete();
void MarkForDelete(string recycleBinTitle);
}
}

View File

@@ -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);

View File

@@ -204,9 +204,6 @@
<data name="EntryDeletingConfirmation" xml:space="preserve">
<value>Are you sure you want to delete this entry?</value>
</data>
<data name="EntryNew" xml:space="preserve">
<value>&lt; New entry &gt;</value>
</data>
<data name="EntryRecycled" xml:space="preserve">
<value>Entry moved to the Recycle bin</value>
</data>
@@ -222,9 +219,6 @@
<data name="GroupDeletingConfirmation" xml:space="preserve">
<value>Are you sure you want to delete the whole group and all its entries?</value>
</data>
<data name="GroupNew" xml:space="preserve">
<value>&lt; New group &gt;</value>
</data>
<data name="GroupRecycled" xml:space="preserve">
<value>Group moved to the Recycle bin</value>
</data>
@@ -276,4 +270,7 @@
<data name="SettingsMenuItemSave" xml:space="preserve">
<value>Saving</value>
</data>
<data name="RecycleBinTitle" xml:space="preserve">
<value>Recycle Bin</value>
</data>
</root>

View File

@@ -214,10 +214,10 @@
<value>Filter...</value>
</data>
<data name="GroupNewItemTextBox.Text" xml:space="preserve">
<value>&lt; New group &gt;</value>
<value>New group</value>
</data>
<data name="GroupNewItemTooltip.Content" xml:space="preserve">
<value>&lt; New group &gt;</value>
<value>New group</value>
</data>
<data name="GroupSearch.PlaceholderText" xml:space="preserve">
<value>Search...</value>

View File

@@ -204,10 +204,6 @@
<data name="EntryDeletingConfirmation" xml:space="preserve">
<value>Êtes-vous sûr de vouloir supprimer cette entrée ?</value>
</data>
<data name="EntryNew" xml:space="preserve">
<value>&lt; Nouvelle entrée &gt;</value>
<comment>Unused</comment>
</data>
<data name="EntryRecycled" xml:space="preserve">
<value>Entrée placée dans la Corbeille</value>
</data>
@@ -223,9 +219,6 @@
<data name="GroupDeletingConfirmation" xml:space="preserve">
<value>Êtes-vous sûr de vouloir supprimer ce group et toutes ses entrées ?</value>
</data>
<data name="GroupNew" xml:space="preserve">
<value>&lt; Nouveau groupe &gt;</value>
</data>
<data name="GroupRecycled" xml:space="preserve">
<value>Groupe placé dans la Corbeille</value>
</data>
@@ -277,4 +270,7 @@
<data name="SettingsMenuItemSave" xml:space="preserve">
<value>Sauvegardes</value>
</data>
<data name="RecycleBinTitle" xml:space="preserve">
<value>Corbeille</value>
</data>
</root>

View File

@@ -214,10 +214,10 @@
<value>Filtrer...</value>
</data>
<data name="GroupNewItemTextBox.Text" xml:space="preserve">
<value>&lt; Nouveau groupe &gt;</value>
<value>Nouveau groupe</value>
</data>
<data name="GroupNewItemTooltip.Content" xml:space="preserve">
<value>&lt; Nouveau groupe &gt;</value>
<value>Nouveau groupe</value>
</data>
<data name="GroupSearch.PlaceholderText" xml:space="preserve">
<value>Rechercher...</value>

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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()
{

View File

@@ -27,6 +27,15 @@ namespace ModernKeePass.ViewModels
}
}
public bool IsNewRecycleBin
{
get { return _database.RecycleBin == null; }
set
{
if (value) _database.RecycleBin = null;
}
}
public ObservableCollection<GroupVm> Groups { get; set; }
public IEnumerable<string> 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;

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -22,7 +22,7 @@
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ToggleSwitch x:Uid="SettingsDatabaseRecycleBin" IsOn="{Binding HasRecycleBin, Mode=TwoWay}" />
<StackPanel Visibility="{Binding HasRecycleBin, Converter={StaticResource BooleanToVisibilityConverter}}">
<RadioButton x:Uid="SettingsDatabaseRecycleBinCreate" GroupName="Recycle" IsChecked="True" />
<RadioButton x:Uid="SettingsDatabaseRecycleBinCreate" GroupName="Recycle" IsChecked="{Binding IsNewRecycleBin, Mode=TwoWay}" />
<RadioButton x:Name="RadioButton" x:Uid="SettingsDatabaseRecycleBinExisting" GroupName="Recycle" IsChecked="{Binding SelectedItem, Converter={StaticResource NullToBooleanConverter}}" />
<ComboBox ItemsSource="{Binding Source={StaticResource RecycleBinGroups}}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" IsEnabled="{Binding IsChecked, ElementName=RadioButton}" />
</StackPanel>

View File

@@ -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();
}
}
}

View File

@@ -1,5 +1,4 @@
using System;
using ModernKeePass.Interfaces;
using ModernKeePass.Interfaces;
namespace ModernKeePassApp.Test.Mock
{