diff --git a/ModernKeePass/Common/DatabaseHelper.cs b/ModernKeePass/Common/DatabaseHelper.cs
index adc8966..ad4d0e9 100644
--- a/ModernKeePass/Common/DatabaseHelper.cs
+++ b/ModernKeePass/Common/DatabaseHelper.cs
@@ -11,16 +11,18 @@ namespace ModernKeePass.Common
{
public class DatabaseHelper
{
- private PwDatabase _pwDatabase = new PwDatabase();
- private StorageFile databaseFile;
+ private readonly PwDatabase _pwDatabase = new PwDatabase();
+ private readonly StorageFile _databaseFile;
public GroupVm RootGroup { get; set; }
- public bool IsOpen { get; set; }
- public string Name { get; set; }
+
+ public bool IsOpen => _pwDatabase.IsOpen;
+
+ public string Name => _databaseFile.Name;
public DatabaseHelper(StorageFile databaseFile)
{
- this.databaseFile = databaseFile;
+ this._databaseFile = databaseFile;
}
public string Open(string password)
{
@@ -28,14 +30,10 @@ namespace ModernKeePass.Common
try
{
key.AddUserKey(new KcpPassword(password));
- _pwDatabase.Open(IOConnectionInfo.FromFile(databaseFile), key, new NullStatusLogger());
+ _pwDatabase.Open(IOConnectionInfo.FromFile(_databaseFile), key, new NullStatusLogger());
//_pwDatabase.Open(IOConnectionInfo.FromPath(databaseFile.Path), key, new NullStatusLogger());
- IsOpen = _pwDatabase.IsOpen;
- if (IsOpen)
- {
- Name = databaseFile.DisplayName;
- RootGroup = new GroupVm(_pwDatabase.RootGroup);
- }
+
+ if (IsOpen) RootGroup = new GroupVm(_pwDatabase.RootGroup);
}
catch (ArgumentNullException)
{
diff --git a/ModernKeePass/MainPage.xaml b/ModernKeePass/MainPage.xaml
index 4b54697..728a129 100644
--- a/ModernKeePass/MainPage.xaml
+++ b/ModernKeePass/MainPage.xaml
@@ -14,7 +14,7 @@
+ Source="{Binding MainMenuItems}" IsSourceGrouped="True" />
@@ -40,6 +40,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ModernKeePass/MainPage.xaml.cs b/ModernKeePass/MainPage.xaml.cs
index 524a4e4..88b70c8 100644
--- a/ModernKeePass/MainPage.xaml.cs
+++ b/ModernKeePass/MainPage.xaml.cs
@@ -1,5 +1,8 @@
using System.Collections.ObjectModel;
+using System.Linq;
+using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
using ModernKeePass.Models;
using ModernKeePass.Pages;
using ModernKeePass.ViewModels;
@@ -16,26 +19,35 @@ namespace ModernKeePass
public MainPage()
{
InitializeComponent();
+ }
+
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
var mainMenuItems = new ObservableCollection
{
- new MainMenuItem {Title = "File", PageType = typeof(OpenDatabasePage)},
- new MainMenuItem {Title = "New" /*, PageType = typeof(NewDatabasePage)*/},
- new MainMenuItem {Title = "Save" , PageType = typeof(SaveDatabasePage)},
- new MainMenuItem {Title = "Recent files - Coming soon" /*, PageType = typeof(RecentDatabasesPage)*/},
- new MainMenuItem {Title = "Url files - Coming soon" /*, PageType = typeof(OpenUrlPage)*/}
+ new MainMenuItem {Title = "Open", PageType = typeof(OpenDatabasePage), Destination = MenuFrame, Parameter = Frame},
+ new MainMenuItem {Title = "New" /*, PageType = typeof(NewDatabasePage)*/, Destination = MenuFrame},
+ new MainMenuItem {Title = "Save" , PageType = typeof(SaveDatabasePage), Destination = MenuFrame, Parameter = Frame},
+ new MainMenuItem {Title = "Recent" /*, PageType = typeof(RecentDatabasesPage)*/, Destination = MenuFrame}
};
- DataContext = new MainVm {MainMenuItems = mainMenuItems};
+ var app = (App)Application.Current;
+ if (app.Database != null && app.Database.IsOpen)
+ mainMenuItems.Add(new MainMenuItem { Title = app.Database.Name, PageType = typeof(GroupDetailPage), Destination = Frame, Parameter = app.Database.RootGroup, Group = 1});
+ var result = from item in mainMenuItems group item by item.Group into grp orderby grp.Key select grp;
+ MenuItemsSource.Source = result;
+ //DataContext = new MainVm {MainMenuItems = mainMenuItems};
+
MenuListView.SelectedIndex = -1;
}
-
+
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- if (Frame == null) return;
var listView = sender as ListView;
if (listView == null) return;
if (listView.SelectedIndex == -1) return;
var selectedItem = listView.SelectedItem as MainMenuItem;
- if (selectedItem != null) MenuFrame.Navigate(selectedItem.PageType, Frame);
+ selectedItem?.Destination.Navigate(selectedItem.PageType, selectedItem.Parameter);
}
}
}
diff --git a/ModernKeePass/Models/MainMenuItem.cs b/ModernKeePass/Models/MainMenuItem.cs
index 9a38340..905a5cd 100644
--- a/ModernKeePass/Models/MainMenuItem.cs
+++ b/ModernKeePass/Models/MainMenuItem.cs
@@ -1,12 +1,23 @@
using System;
+using Windows.UI.Xaml.Controls;
using ModernKeePass.Interfaces;
namespace ModernKeePass.Models
{
public class MainMenuItem: IIsEnabled
{
- public string Title { get; set; }
+ private string _title;
+
+ public string Title
+ {
+ get { return IsEnabled ? _title : _title + " - Coming soon"; }
+ set { _title = value; }
+ }
+
public Type PageType { get; set; }
+ public object Parameter { get; set; }
+ public Frame Destination { get; set; }
+ public int Group { get; set; } = 0;
public bool IsEnabled => PageType != null;
public override string ToString()
diff --git a/ModernKeePass/Pages/OpenDatabasePage.xaml b/ModernKeePass/Pages/OpenDatabasePage.xaml
index 0c66e35..00ab3d4 100644
--- a/ModernKeePass/Pages/OpenDatabasePage.xaml
+++ b/ModernKeePass/Pages/OpenDatabasePage.xaml
@@ -25,13 +25,15 @@
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
index 267d074..3e7f986 100644
--- a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
+++ b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
@@ -12,21 +12,22 @@ namespace ModernKeePass.Pages
///
public sealed partial class SaveDatabasePage : Page
{
+ private Frame _mainFrame;
public SaveDatabasePage()
{
- this.InitializeComponent();
+ InitializeComponent();
DataContext = new DatabaseVm();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
+ _mainFrame = e.Parameter as Frame;
var app = (App)Application.Current;
if (app.Database == null) return;
var databaseVm = DataContext as DatabaseVm;
if (databaseVm == null) return;
- databaseVm.IsOpen = app.Database.IsOpen;
- databaseVm.NotifyPropertyChanged("IsOpen");
+ UpdateDatabaseStatus(app, databaseVm);
}
private void SaveButton_OnClick(object sender, RoutedEventArgs e)
@@ -34,6 +35,14 @@ namespace ModernKeePass.Pages
var app = (App) Application.Current;
app.Database.Save();
app.Database.Close();
+ UpdateDatabaseStatus(app, DataContext as DatabaseVm);
+ _mainFrame.Navigate(typeof(MainPage));
+ }
+
+ private void UpdateDatabaseStatus(App app, DatabaseVm databaseVm)
+ {
+ databaseVm.IsOpen = app.Database.IsOpen;
+ databaseVm.NotifyPropertyChanged("IsOpen");
}
}
}