diff --git a/ModernKeePass/MainPage.xaml.cs b/ModernKeePass/MainPage.xaml.cs
index 0692664..e552153 100644
--- a/ModernKeePass/MainPage.xaml.cs
+++ b/ModernKeePass/MainPage.xaml.cs
@@ -1,5 +1,6 @@
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
+using ModernKeePass.Pages;
using ModernKeePass.ViewModels;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
@@ -22,6 +23,7 @@ namespace ModernKeePass
{
base.OnNavigatedTo(e);
DataContext = new MainVm(Frame, MenuFrame);
+ if (Model.SelectedItem == null) MenuFrame.Navigate(typeof(WelcomePage));
}
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj
index 8beb5ef..cb620ac 100644
--- a/ModernKeePass/ModernKeePass.csproj
+++ b/ModernKeePass/ModernKeePass.csproj
@@ -136,6 +136,9 @@
NewDatabasePage.xaml
+
+ WelcomePage.xaml
+
@@ -211,6 +214,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml b/ModernKeePass/Pages/NewDatabasePage.xaml
index ad2f32d..7a9df0e 100644
--- a/ModernKeePass/Pages/NewDatabasePage.xaml
+++ b/ModernKeePass/Pages/NewDatabasePage.xaml
@@ -17,7 +17,8 @@
+ Create a new password database to the location of your chosing.
-
+
diff --git a/ModernKeePass/Pages/OpenDatabasePage.xaml b/ModernKeePass/Pages/OpenDatabasePage.xaml
index fc2f9d1..95a5463 100644
--- a/ModernKeePass/Pages/OpenDatabasePage.xaml
+++ b/ModernKeePass/Pages/OpenDatabasePage.xaml
@@ -17,7 +17,9 @@
+ Open an existing password database from your PC.
+ Open an existing password database from an Internet location (not yet implemented).
diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml b/ModernKeePass/Pages/SaveDatabasePage.xaml
index 858d54c..8e7d74a 100644
--- a/ModernKeePass/Pages/SaveDatabasePage.xaml
+++ b/ModernKeePass/Pages/SaveDatabasePage.xaml
@@ -11,7 +11,9 @@
-
-
+
+ This will save and close the currently opened database.
+
+ This will save the currently opened database as a new file and leave it open.
diff --git a/ModernKeePass/Pages/WelcomePage.xaml b/ModernKeePass/Pages/WelcomePage.xaml
new file mode 100644
index 0000000..54ec365
--- /dev/null
+++ b/ModernKeePass/Pages/WelcomePage.xaml
@@ -0,0 +1,20 @@
+
+
+
+ Welcome
+
+
+ Have an existing password database? Open it here.
+
+
+
+ Want to create a new password database? Do it here.
+
+
+
diff --git a/ModernKeePass/Pages/WelcomePage.xaml.cs b/ModernKeePass/Pages/WelcomePage.xaml.cs
new file mode 100644
index 0000000..8e5e6a9
--- /dev/null
+++ b/ModernKeePass/Pages/WelcomePage.xaml.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
+
+namespace ModernKeePass.Pages
+{
+ ///
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ ///
+ public sealed partial class WelcomePage : Page
+ {
+ public WelcomePage()
+ {
+ this.InitializeComponent();
+ }
+ }
+}
diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs
index cb9a28f..5598efe 100644
--- a/ModernKeePass/ViewModels/EntryVm.cs
+++ b/ModernKeePass/ViewModels/EntryVm.cs
@@ -1,4 +1,4 @@
-using Windows.UI.Text;
+using System.ComponentModel;
using Windows.UI.Xaml.Controls;
using ModernKeePass.Common;
using ModernKeePass.Mappings;
@@ -7,7 +7,7 @@ using ModernKeePassLib.Security;
namespace ModernKeePass.ViewModels
{
- public class EntryVm: NotifyPropertyChangedBase
+ public class EntryVm : INotifyPropertyChanged
{
public GroupVm ParentGroup { get; }
public PwEntry Entry { get; }
@@ -36,7 +36,11 @@ namespace ModernKeePass.ViewModels
public string Password
{
get { return GetEntryValue(PwDefs.PasswordField); }
- set { SetEntryValue(PwDefs.PasswordField, value); }
+ set
+ {
+ SetEntryValue(PwDefs.PasswordField, value);
+ NotifyPropertyChanged("Password");
+ }
}
public string Url
{
@@ -62,17 +66,31 @@ namespace ModernKeePass.ViewModels
public bool IsEditMode
{
get { return _isEditMode; }
- set { SetProperty(ref _isEditMode, value); }
+ set
+ {
+ _isEditMode = value;
+ NotifyPropertyChanged("IsEditMode");
+ }
}
public bool IsRevealPassword
{
get { return _isRevealPassword; }
- set { SetProperty(ref _isRevealPassword, value); }
+ set
+ {
+ _isRevealPassword = value;
+ NotifyPropertyChanged("IsRevealPassword");
+ }
}
+ public event PropertyChangedEventHandler PropertyChanged;
+
private bool _isEditMode;
private bool _isRevealPassword;
+ private void NotifyPropertyChanged(string propertyName)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
public EntryVm() { }
public EntryVm(PwEntry entry, GroupVm parent)
diff --git a/ModernKeePass/ViewModels/Items/MainMenuItemVm.cs b/ModernKeePass/ViewModels/Items/MainMenuItemVm.cs
index 14070ef..1d7e5b8 100644
--- a/ModernKeePass/ViewModels/Items/MainMenuItemVm.cs
+++ b/ModernKeePass/ViewModels/Items/MainMenuItemVm.cs
@@ -7,21 +7,16 @@ namespace ModernKeePass.ViewModels
{
public class MainMenuItemVm: NotifyPropertyChangedBase, IIsEnabled
{
- private string _title;
private bool _isSelected;
- public string Title
- {
- get { return IsEnabled ? _title : _title + " - Coming soon"; }
- set { _title = value; }
- }
+ public string Title { get; set; }
public Type PageType { get; set; }
public object Parameter { get; set; }
public Frame Destination { get; set; }
public int Group { get; set; } = 0;
public Symbol SymbolIcon { get; set; }
- public bool IsEnabled => PageType != null;
+ public bool IsEnabled { get; set; } = true;
public bool IsSelected
{
diff --git a/ModernKeePass/ViewModels/MainVm.cs b/ModernKeePass/ViewModels/MainVm.cs
index 086951c..06cfeea 100644
--- a/ModernKeePass/ViewModels/MainVm.cs
+++ b/ModernKeePass/ViewModels/MainVm.cs
@@ -45,6 +45,7 @@ namespace ModernKeePass.ViewModels
{
var app = (App)Application.Current;
var mru = StorageApplicationPermissions.MostRecentlyUsedList;
+ var isDatabaseOpen = app.Database != null && app.Database.Status == DatabaseHelper.DatabaseStatus.Opened;
var mainMenuItems = new ObservableCollection
{
@@ -60,11 +61,11 @@ namespace ModernKeePass.ViewModels
new MainMenuItemVm
{
Title = "Save" , PageType = typeof(SaveDatabasePage), Destination = destinationFrame, Parameter = referenceFrame, SymbolIcon = Symbol.Save,
- IsSelected = app.Database != null && app.Database.Status == DatabaseHelper.DatabaseStatus.Opened
+ IsSelected = isDatabaseOpen, IsEnabled = isDatabaseOpen
},
new MainMenuItemVm {
Title = "Recent" , PageType = typeof(RecentDatabasesPage), Destination = destinationFrame, Parameter = referenceFrame, SymbolIcon = Symbol.Copy,
- IsSelected = (app.Database == null || app.Database.Status == DatabaseHelper.DatabaseStatus.Closed) && mru.Entries.Count > 0
+ IsSelected = (app.Database == null || app.Database.Status == DatabaseHelper.DatabaseStatus.Closed) && mru.Entries.Count > 0, IsEnabled = mru.Entries.Count > 0
}
};
// Auto-select the Recent Items menu item if the conditions are met
diff --git a/ModernKeePass/ViewModels/SaveVm.cs b/ModernKeePass/ViewModels/SaveVm.cs
index 7001054..e10863e 100644
--- a/ModernKeePass/ViewModels/SaveVm.cs
+++ b/ModernKeePass/ViewModels/SaveVm.cs
@@ -1,34 +1,16 @@
-using System.ComponentModel;
-using Windows.Storage;
+using Windows.Storage;
using Windows.UI.Xaml;
-using ModernKeePass.Common;
namespace ModernKeePass.ViewModels
{
- public class SaveVm: INotifyPropertyChanged
+ public class SaveVm
{
- public bool IsSaveEnabled
- {
- get
- {
- var app = (App)Application.Current;
- return app.Database.Status == DatabaseHelper.DatabaseStatus.Opened;
- }
- }
-
- public event PropertyChangedEventHandler PropertyChanged;
- private void NotifyPropertyChanged(string propertyName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
-
public void Save(bool close = true)
{
var app = (App)Application.Current;
app.Database.Save();
if (!close) return;
app.Database.Close();
- NotifyPropertyChanged("IsSaveEnabled");
}
internal void Save(StorageFile file)