Added some translations in file pickers

Corrected key file creation picker issue (any not allowed)
Fixed some Sonar issues
This commit is contained in:
Geoffroy BONNEVILLE
2020-05-05 17:32:07 +02:00
parent 8fb468358e
commit 2e22a2bd92
13 changed files with 52 additions and 18 deletions

View File

@@ -24,7 +24,6 @@ namespace ModernKeePass.Application.Group.Commands.AddEntry
if (!_database.IsOpen) throw new DatabaseClosedException(); if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.AddEntry(message.ParentGroupId, message.EntryId); await _database.AddEntry(message.ParentGroupId, message.EntryId);
//message.ParentGroup.Entries.Add(message.Entry);
} }
} }
} }

View File

@@ -24,7 +24,6 @@ namespace ModernKeePass.Application.Group.Commands.AddGroup
if (!_database.IsOpen) throw new DatabaseClosedException(); if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.AddGroup(message.ParentGroupId, message.GroupId); await _database.AddGroup(message.ParentGroupId, message.GroupId);
//message.ParentGroup.SubGroups.Add(message.Group);
} }
} }
} }

View File

@@ -24,7 +24,6 @@ namespace ModernKeePass.Application.Group.Commands.RemoveEntry
if (!_database.IsOpen) throw new DatabaseClosedException(); if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.RemoveEntry(message.ParentGroupId, message.EntryId); await _database.RemoveEntry(message.ParentGroupId, message.EntryId);
//message.ParentGroup.Entries.Remove(message.Entry);
} }
} }
} }

View File

@@ -24,7 +24,6 @@ namespace ModernKeePass.Application.Group.Commands.RemoveGroup
if (!_database.IsOpen) throw new DatabaseClosedException(); if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.RemoveGroup(message.ParentGroupId, message.GroupId); await _database.RemoveGroup(message.ParentGroupId, message.GroupId);
//message.ParentGroup.SubGroups.Remove(message.Group);
} }
} }
} }

View File

@@ -8,6 +8,7 @@
{ {
public static string Any => "*"; public static string Any => "*";
public static string Kdbx => ".kdbx"; public static string Kdbx => ".kdbx";
public static string Key => ".key";
} }
} }
} }

View File

@@ -38,7 +38,6 @@ namespace ModernKeePass
private readonly ISettingsProxy _settings; private readonly ISettingsProxy _settings;
private readonly INavigationService _navigation; private readonly INavigationService _navigation;
private readonly IHockeyClient _hockey; private readonly IHockeyClient _hockey;
private readonly IDialogService _dialog;
private readonly INotificationService _notification; private readonly INotificationService _notification;
private readonly IFileProxy _file; private readonly IFileProxy _file;
private readonly IMessenger _messenger; private readonly IMessenger _messenger;
@@ -64,7 +63,6 @@ namespace ModernKeePass
_resource = Services.GetService<IResourceProxy>(); _resource = Services.GetService<IResourceProxy>();
_settings = Services.GetService<ISettingsProxy>(); _settings = Services.GetService<ISettingsProxy>();
_navigation = Services.GetService<INavigationService>(); _navigation = Services.GetService<INavigationService>();
_dialog = Services.GetService<IDialogService>();
_notification = Services.GetService<INotificationService>(); _notification = Services.GetService<INotificationService>();
_hockey = Services.GetService<IHockeyClient>(); _hockey = Services.GetService<IHockeyClient>();
_file = Services.GetService<IFileProxy>(); _file = Services.GetService<IFileProxy>();
@@ -134,9 +132,6 @@ namespace ModernKeePass
{ {
// Load state from previously terminated application // Load state from previously terminated application
await SuspensionManager.RestoreAsync(); await SuspensionManager.RestoreAsync();
#if DEBUG
await _dialog.ShowMessage("Windows or an error made the app terminate", "App terminated");
#endif
} }
// Place the frame in the current Window // Place the frame in the current Window

View File

@@ -267,4 +267,13 @@
<data name="FileNotFoundTitle" xml:space="preserve"> <data name="FileNotFoundTitle" xml:space="preserve">
<value>File not found</value> <value>File not found</value>
</data> </data>
<data name="MessageDialogSaveNameSuggestion" xml:space="preserve">
<value>KeePass</value>
</data>
<data name="CompositeKeyFileTypeDesc" xml:space="preserve">
<value>Key file</value>
</data>
<data name="CompositeKeyFileNameSuggestion" xml:space="preserve">
<value>Key</value>
</data>
</root> </root>

View File

@@ -267,4 +267,13 @@
<data name="FileNotFoundTitle" xml:space="preserve"> <data name="FileNotFoundTitle" xml:space="preserve">
<value>Fichier manquant</value> <value>Fichier manquant</value>
</data> </data>
<data name="MessageDialogSaveNameSuggestion" xml:space="preserve">
<value>KeePass</value>
</data>
<data name="CompositeKeyFileTypeDesc" xml:space="preserve">
<value>Fichier de clé</value>
</data>
<data name="CompositeKeyFileNameSuggestion" xml:space="preserve">
<value>Clé</value>
</data>
</root> </root>

View File

@@ -0,0 +1,5 @@
Redesign of the UI (top menu and hamburger menu)
Resuming the app re-opens previously opened database
Notify user and show the Save As dialog when an error is encountered during saving
Save As actually works now
Creating a new group is now done inline

View File

@@ -0,0 +1,5 @@
Redesign de l'interface utilisateur (menu superieur et menu hamburger)
Le re-chargement de l'app re-ouvre la base de donnees ouverte precedemment
L'utlisateur est prevenu et un popup de sauvegarde est affiche quand il y a une erreur de sauvegarde
La fonctionnalite Sauvegarder Sous fonctionne correctement
La creation d'un nouveau groupe se fait directement dans le menu

View File

@@ -17,15 +17,17 @@ namespace ModernKeePass.ViewModels
private readonly ISettingsProxy _settings; private readonly ISettingsProxy _settings;
private readonly INavigationService _navigation; private readonly INavigationService _navigation;
private readonly IFileProxy _file; private readonly IFileProxy _file;
private readonly IResourceProxy _resource;
public RelayCommand CreateDatabaseFileCommand { get; } public RelayCommand CreateDatabaseFileCommand { get; }
public NewVm(IMediator mediator, ISettingsProxy settings, INavigationService navigation, IFileProxy file): base(file) public NewVm(IMediator mediator, ISettingsProxy settings, INavigationService navigation, IFileProxy file, IResourceProxy resource): base(file)
{ {
_mediator = mediator; _mediator = mediator;
_settings = settings; _settings = settings;
_navigation = navigation; _navigation = navigation;
_file = file; _file = file;
_resource = resource;
CreateDatabaseFileCommand = new RelayCommand(async () => await CreateDatabaseFile()); CreateDatabaseFileCommand = new RelayCommand(async () => await CreateDatabaseFile());
@@ -34,8 +36,11 @@ namespace ModernKeePass.ViewModels
private async Task CreateDatabaseFile() private async Task CreateDatabaseFile()
{ {
// TODO: get these from resource var file = await _file.CreateFile(_resource.GetResourceValue("MessageDialogSaveNameSuggestion"),
var file = await _file.CreateFile("New Database", Domain.Common.Constants.Extensions.Kdbx, "KeePass 2.x database", true); Domain.Common.Constants.Extensions.Kdbx,
_resource.GetResourceValue("MessageDialogSaveErrorFileTypeDesc"),
true);
if (file == null) return;
Token = file.Id; Token = file.Id;
Path = file.Path; Path = file.Path;
Name = file.Name; Name = file.Name;

View File

@@ -24,12 +24,14 @@ namespace ModernKeePass.ViewModels
private readonly IMediator _mediator; private readonly IMediator _mediator;
private readonly INavigationService _navigation; private readonly INavigationService _navigation;
private readonly IFileProxy _file; private readonly IFileProxy _file;
private readonly IResourceProxy _resource;
public SaveVm(IMediator mediator, INavigationService navigation, IFileProxy file) public SaveVm(IMediator mediator, INavigationService navigation, IFileProxy file, IResourceProxy resource)
{ {
_mediator = mediator; _mediator = mediator;
_navigation = navigation; _navigation = navigation;
_file = file; _file = file;
_resource = resource;
SaveAsCommand = new RelayCommand(async () => await SaveAs()); SaveAsCommand = new RelayCommand(async () => await SaveAs());
SaveCommand = new RelayCommand(async () => await Save(), () => IsSaveEnabled); SaveCommand = new RelayCommand(async () => await Save(), () => IsSaveEnabled);
@@ -40,9 +42,11 @@ namespace ModernKeePass.ViewModels
private async Task SaveAs() private async Task SaveAs()
{ {
// TODO: get these from resource var file = await _file.CreateFile(_resource.GetResourceValue("MessageDialogSaveNameSuggestion"),
var file = await _file.CreateFile("New Database", Domain.Common.Constants.Extensions.Kdbx, "KeePass 2.x database", true); Domain.Common.Constants.Extensions.Kdbx,
_resource.GetResourceValue("MessageDialogSaveErrorFileTypeDesc"),
true);
if (file == null) return;
await _mediator.Send(new SaveDatabaseCommand { FilePath = file.Id }); await _mediator.Send(new SaveDatabaseCommand { FilePath = file.Id });
_navigation.NavigateTo(Constants.Navigation.MainPage); _navigation.NavigateTo(Constants.Navigation.MainPage);
} }

View File

@@ -14,6 +14,7 @@ namespace ModernKeePass.ViewModels
{ {
private readonly IMediator _mediator; private readonly IMediator _mediator;
private readonly ICredentialsProxy _credentials; private readonly ICredentialsProxy _credentials;
private readonly IResourceProxy _resource;
private readonly IFileProxy _file; private readonly IFileProxy _file;
public bool HasPassword public bool HasPassword
@@ -105,6 +106,7 @@ namespace ModernKeePass.ViewModels
{ {
_mediator = mediator; _mediator = mediator;
_credentials = credentials; _credentials = credentials;
_resource = resource;
_file = file; _file = file;
OpenKeyFileCommand = new RelayCommand(async () => await OpenKeyFile(), () => HasKeyFile); OpenKeyFileCommand = new RelayCommand(async () => await OpenKeyFile(), () => HasKeyFile);
@@ -117,12 +119,16 @@ namespace ModernKeePass.ViewModels
private async Task OpenKeyFile() private async Task OpenKeyFile()
{ {
var file = await _file.OpenFile(string.Empty, Constants.Extensions.Any, false); var file = await _file.OpenFile(string.Empty, Constants.Extensions.Any, false);
if (file == null) return;
SetKeyFileInfo(file); SetKeyFileInfo(file);
} }
private async Task CreateKeyFile() private async Task CreateKeyFile()
{ {
var file = await _file.CreateFile("Key", Constants.Extensions.Any, "Key file", false); var file = await _file.CreateFile(_resource.GetResourceValue("CompositeKeyFileNameSuggestion"),
Constants.Extensions.Key, _resource.GetResourceValue("CompositeKeyFileTypeDesc"),
false);
if (file == null) return;
SetKeyFileInfo(file); SetKeyFileInfo(file);
await _mediator.Send(new GenerateKeyFileCommand { KeyFilePath = KeyFilePath }); await _mediator.Send(new GenerateKeyFileCommand { KeyFilePath = KeyFilePath });
@@ -130,7 +136,6 @@ namespace ModernKeePass.ViewModels
private void SetKeyFileInfo(FileInfo file) private void SetKeyFileInfo(FileInfo file)
{ {
if (file == null) return;
KeyFilePath = file.Id; KeyFilePath = file.Id;
KeyFileText = file.Name; KeyFileText = file.Name;
HasKeyFile = true; HasKeyFile = true;