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