2017-09-15 11:24:14 +02:00
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using Windows.Storage;
|
2017-09-12 18:20:32 +02:00
|
|
|
|
|
|
|
|
|
using ModernKeePassLib;
|
|
|
|
|
using ModernKeePassLib.Keys;
|
|
|
|
|
using ModernKeePassLib.Serialization;
|
|
|
|
|
using ModernKeePassLib.Interfaces;
|
|
|
|
|
|
|
|
|
|
namespace ModernKeePass.ViewModels
|
|
|
|
|
{
|
2017-09-15 11:24:14 +02:00
|
|
|
|
public class DatabaseVm : INotifyPropertyChanged
|
2017-09-12 18:20:32 +02:00
|
|
|
|
{
|
|
|
|
|
private PwDatabase _database = new PwDatabase();
|
|
|
|
|
|
|
|
|
|
public string Name { get; set; }
|
2017-09-13 18:37:44 +02:00
|
|
|
|
public GroupVm RootGroup { get; set; }
|
2017-09-12 18:20:32 +02:00
|
|
|
|
|
2017-09-15 11:24:14 +02:00
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
2017-09-12 18:20:32 +02:00
|
|
|
|
public async void Open(StorageFile databaseFile, string password)
|
|
|
|
|
{
|
|
|
|
|
var key = new CompositeKey();
|
|
|
|
|
key.AddUserKey(new KcpPassword(password));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
await _database.Open(IOConnectionInfo.FromFile(databaseFile), key, new NullStatusLogger());
|
|
|
|
|
if (!_database.IsOpen) return;
|
|
|
|
|
Name = databaseFile.DisplayName;
|
2017-09-13 18:37:44 +02:00
|
|
|
|
RootGroup = new GroupVm (_database.RootGroup);
|
2017-09-12 18:20:32 +02:00
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
_database.Close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|