diff --git a/ModernKeePass/Common/DatabaseHelper.cs b/ModernKeePass/Common/DatabaseHelper.cs
index 8881712..d966e22 100644
--- a/ModernKeePass/Common/DatabaseHelper.cs
+++ b/ModernKeePass/Common/DatabaseHelper.cs
@@ -21,7 +21,7 @@ namespace ModernKeePass.Common
public GroupVm RootGroup { get; set; }
public DatabaseStatus Status { get; private set; } = DatabaseStatus.Closed;
- public string Name => _pwDatabase?.Name;
+ public string Name => DatabaseFile?.Name;
public StorageFile DatabaseFile
{
diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs
index c1f25e5..ce99f2c 100644
--- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs
+++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System;
+using System.Threading.Tasks;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.Xaml;
@@ -30,11 +31,14 @@ namespace ModernKeePass.Controls
InitializeComponent();
}
+ public event PasswordCheckingEventHandler ValidationChecking;
+ public delegate void PasswordCheckingEventHandler(object sender, EventArgs e);
public event PasswordCheckedEventHandler ValidationChecked;
public delegate void PasswordCheckedEventHandler(object sender, PasswordEventArgs e);
private void OpenButton_OnClick(object sender, RoutedEventArgs e)
{
+ ValidationChecking?.Invoke(this, new EventArgs());
var app = (App)Application.Current;
StatusTextBlock.Text = app.Database.Open(PasswordBox.Password, CreateNew);
if (app.Database.Status == DatabaseHelper.DatabaseStatus.Opened)
diff --git a/ModernKeePass/Pages/RecentDatabasesPage.xaml b/ModernKeePass/Pages/RecentDatabasesPage.xaml
index 27bda3a..e2751c7 100644
--- a/ModernKeePass/Pages/RecentDatabasesPage.xaml
+++ b/ModernKeePass/Pages/RecentDatabasesPage.xaml
@@ -22,8 +22,9 @@
-
-
+
+
+
diff --git a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
index 66ee557..e74df14 100644
--- a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
+++ b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
@@ -1,6 +1,9 @@
-using Windows.UI.Xaml.Controls;
+using System;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using ModernKeePass.Events;
+using ModernKeePass.ViewModels;
// Pour en savoir plus sur le modèle d'élément Page vierge, consultez la page http://go.microsoft.com/fwlink/?LinkId=234238
@@ -28,5 +31,13 @@ namespace ModernKeePass.Pages
{
_mainFrame.Navigate(typeof(GroupDetailPage), e.RootGroup);
}
+
+ private void OpenDatabaseUserControl_OnValidationChecking(object sender, EventArgs e)
+ {
+ //throw new NotImplementedException();
+ var viewModel = DataContext as RecentVm;
+ var app = (App)Application.Current;
+ app.Database.DatabaseFile = viewModel.SelectedItem.DatabaseFile;
+ }
}
}
diff --git a/ModernKeePass/ViewModels/Items/RecentItemVm.cs b/ModernKeePass/ViewModels/Items/RecentItemVm.cs
index b09a268..412e04e 100644
--- a/ModernKeePass/ViewModels/Items/RecentItemVm.cs
+++ b/ModernKeePass/ViewModels/Items/RecentItemVm.cs
@@ -1,13 +1,25 @@
-using Windows.Storage;
+using System;
+using Windows.Storage;
using ModernKeePass.Common;
+using Windows.Storage.AccessCache;
namespace ModernKeePass.ViewModels
{
public class RecentItemVm: NotifyPropertyChangedBase
{
private bool _isSelected;
- public string Token { get; set; }
- public string Name { get; set; }
+
+ public RecentItemVm(AccessListEntry entry, StorageFile file)
+ {
+ Token = entry.Token;
+ Name = entry.Metadata;
+ DatabaseFile = file;
+ }
+
+ public StorageFile DatabaseFile { get; private set; }
+ public string Token { get; private set; }
+ public string Name { get; private set; }
+ public string Path => DatabaseFile.Path;
public bool IsSelected
{
diff --git a/ModernKeePass/ViewModels/RecentVm.cs b/ModernKeePass/ViewModels/RecentVm.cs
index 6e09966..03d0925 100644
--- a/ModernKeePass/ViewModels/RecentVm.cs
+++ b/ModernKeePass/ViewModels/RecentVm.cs
@@ -1,8 +1,6 @@
using System;
using System.Collections.ObjectModel;
-using System.Linq;
using Windows.Storage.AccessCache;
-using Windows.UI.Xaml;
using ModernKeePass.Common;
namespace ModernKeePass.ViewModels
@@ -10,7 +8,7 @@ namespace ModernKeePass.ViewModels
public class RecentVm : NotifyPropertyChangedBase
{
private RecentItemVm _selectedItem;
- private ObservableCollection _recentItems;
+ private ObservableCollection _recentItems = new ObservableCollection();
public ObservableCollection RecentItems
{
@@ -30,30 +28,27 @@ namespace ModernKeePass.ViewModels
}
SetProperty(ref _selectedItem, value);
-
- if (_selectedItem != null)
- {
- _selectedItem.IsSelected = true;
- }
-
- var mru = StorageApplicationPermissions.MostRecentlyUsedList;
- var database = ((App)Application.Current).Database;
- try
- {
- database.DatabaseFile = mru.GetFileAsync(SelectedItem.Token).GetAwaiter().GetResult();
- }
- catch (Exception e)
- {
- }
+
+ if (_selectedItem == null) return;
+ _selectedItem.IsSelected = true;
}
}
public RecentVm()
{
var mru = StorageApplicationPermissions.MostRecentlyUsedList;
- RecentItems = new ObservableCollection(
- from entry in mru.Entries
- select new RecentItemVm { Name = entry.Metadata, Token = entry.Token });
+ foreach (var entry in mru.Entries)
+ {
+ try
+ {
+ var file = mru.GetFileAsync(entry.Token).GetAwaiter().GetResult();
+ RecentItems.Add(new RecentItemVm(entry, file));
+ }
+ catch (Exception)
+ {
+ mru.Remove(entry.Token);
+ }
+ }
if (RecentItems.Count > 0)
SelectedItem = RecentItems[0];
}