diff --git a/ModernKeePass/Common/DatabaseHelper.cs b/ModernKeePass/Common/DatabaseHelper.cs
index 2ba6d39..294276f 100644
--- a/ModernKeePass/Common/DatabaseHelper.cs
+++ b/ModernKeePass/Common/DatabaseHelper.cs
@@ -63,7 +63,14 @@ namespace ModernKeePass.Common
}
return string.Empty;
}
-
+
+ internal void Save(StorageFile file)
+ {
+ DatabaseFile = file;
+ _pwDatabase.SaveAs(IOConnectionInfo.FromFile(DatabaseFile), true, new NullStatusLogger());
+ Status = DatabaseStatus.Opened;
+ }
+
public void Save()
{
if (_pwDatabase != null && _pwDatabase.IsOpen)
diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj
index 41283d7..40bf86b 100644
--- a/ModernKeePass/ModernKeePass.csproj
+++ b/ModernKeePass/ModernKeePass.csproj
@@ -156,7 +156,6 @@
-
diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml b/ModernKeePass/Pages/SaveDatabasePage.xaml
index 557f3fc..858d54c 100644
--- a/ModernKeePass/Pages/SaveDatabasePage.xaml
+++ b/ModernKeePass/Pages/SaveDatabasePage.xaml
@@ -6,13 +6,12 @@
xmlns:viewModels="using:ModernKeePass.ViewModels"
x:Class="ModernKeePass.Pages.SaveDatabasePage"
mc:Ignorable="d">
-
-
+
diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
index 688e98c..72343c5 100644
--- a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
+++ b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
@@ -1,4 +1,7 @@
-using Windows.UI.Xaml;
+using System;
+using System.Collections.Generic;
+using Windows.Storage.Pickers;
+using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using ModernKeePass.ViewModels;
@@ -30,5 +33,22 @@ namespace ModernKeePass.Pages
viewModel.Save();
_mainFrame.Navigate(typeof(MainPage));
}
+
+ private async void SaveAsButton_OnClick(object sender, RoutedEventArgs e)
+ {
+ var savePicker = new FileSavePicker
+ {
+ SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
+ SuggestedFileName = "New Database"
+ };
+ savePicker.FileTypeChoices.Add("KeePass 2.x database", new List { ".kdbx" });
+
+ var file = await savePicker.PickSaveFileAsync();
+ if (file == null) return;
+ var viewModel = DataContext as SaveVm;
+ viewModel.Save(file);
+
+ _mainFrame.Navigate(typeof(MainPage));
+ }
}
}
diff --git a/ModernKeePass/ViewModels/NewVm.cs b/ModernKeePass/ViewModels/NewVm.cs
deleted file mode 100644
index fdbacee..0000000
--- a/ModernKeePass/ViewModels/NewVm.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.ComponentModel;
-using Windows.Storage;
-using Windows.Storage.AccessCache;
-using Windows.UI.Xaml;
-using ModernKeePass.Common;
-
-namespace ModernKeePass.ViewModels
-{
- public class NewVm : INotifyPropertyChanged
- {
- public bool ShowPasswordBox
- {
- get { return ((App)Application.Current).Database.Status == DatabaseHelper.DatabaseStatus.Opening; }
- }
-
- public string Name
- {
- get { return ((App)Application.Current).Database.Name; }
- }
-
- public event PropertyChangedEventHandler PropertyChanged;
-
- private void NotifyPropertyChanged(string propertyName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
-
- public void OpenFile(StorageFile file)
- {
- var database = ((App)Application.Current).Database;
- database.DatabaseFile = file;
- NotifyPropertyChanged("Name");
- NotifyPropertyChanged("ShowPasswordBox");
- AddToRecentList(file);
- }
-
- private void AddToRecentList(StorageFile file)
- {
- var mru = StorageApplicationPermissions.MostRecentlyUsedList;
- mru.Add(file, file.DisplayName);
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass/ViewModels/SaveVm.cs b/ModernKeePass/ViewModels/SaveVm.cs
index 2d27db0..d475d67 100644
--- a/ModernKeePass/ViewModels/SaveVm.cs
+++ b/ModernKeePass/ViewModels/SaveVm.cs
@@ -1,6 +1,8 @@
using System.ComponentModel;
using Windows.UI.Xaml;
using ModernKeePass.Common;
+using System;
+using Windows.Storage;
namespace ModernKeePass.ViewModels
{
@@ -29,5 +31,12 @@ namespace ModernKeePass.ViewModels
app.Database.Close();
NotifyPropertyChanged("IsSaveEnabled");
}
+
+ internal void Save(StorageFile file)
+ {
+ var app = (App)Application.Current;
+ app.Database.Save(file);
+ NotifyPropertyChanged("IsSaveEnabled");
+ }
}
}
\ No newline at end of file