diff --git a/ModernKeePass/MainPage.xaml.cs b/ModernKeePass/MainPage.xaml.cs
index b8360b6..0692664 100644
--- a/ModernKeePass/MainPage.xaml.cs
+++ b/ModernKeePass/MainPage.xaml.cs
@@ -11,6 +11,8 @@ namespace ModernKeePass
///
public sealed partial class MainPage
{
+ public MainVm Model => (MainVm)DataContext;
+
public MainPage()
{
InitializeComponent();
@@ -24,8 +26,7 @@ namespace ModernKeePass
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- var mainVm = DataContext as MainVm;
- mainVm?.SelectedItem?.Destination.Navigate(mainVm.SelectedItem.PageType, mainVm.SelectedItem.Parameter);
+ Model.SelectedItem?.Destination.Navigate(Model.SelectedItem.PageType, Model.SelectedItem.Parameter);
}
}
}
diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml
index 68befe8..a2a3a44 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml
@@ -36,26 +36,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
index 54d2221..72c6d50 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
@@ -99,7 +99,7 @@ namespace ModernKeePass.Pages
{
try
{
- var uri = new Uri(urlTextBox.Text);
+ var uri = new Uri(UrlTextBox.Text);
await Windows.System.Launcher.LaunchUriAsync(uri);
}
catch
diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml.cs b/ModernKeePass/Pages/GroupDetailPage.xaml.cs
index be8edec..1d4893b 100644
--- a/ModernKeePass/Pages/GroupDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/GroupDetailPage.xaml.cs
@@ -22,7 +22,8 @@ namespace ModernKeePass.Pages
/// process lifetime management
///
public NavigationHelper NavigationHelper { get; }
-
+ public GroupVm Model => (GroupVm)DataContext;
+
public GroupDetailPage()
{
InitializeComponent();
@@ -94,8 +95,7 @@ namespace ModernKeePass.Pages
case -1:
return;
case 0:
- var currentGroup = DataContext as GroupVm;
- currentGroup?.CreateNewEntry();
+ Model.CreateNewEntry();
GridView.SelectedIndex = -1;
// TODO: Navigate to new entry?
return;
@@ -111,8 +111,7 @@ namespace ModernKeePass.Pages
// Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers
messageDialog.Commands.Add(new UICommand("Delete", delete =>
{
- var group = DataContext as GroupVm;
- group?.RemoveGroup();
+ Model.RemoveGroup();
if (Frame.CanGoBack) Frame.GoBack();
}));
messageDialog.Commands.Add(new UICommand("Cancel"));
@@ -137,9 +136,8 @@ namespace ModernKeePass.Pages
private void SearchBox_OnSuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
{
- var viewModel = DataContext as GroupVm;
var imageUri = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx://Assets/Logo.scale-80.png"));
- var results = viewModel?.Entries.Skip(1).Where(e => e.Title.IndexOf(args.QueryText, StringComparison.OrdinalIgnoreCase) >= 0).Take(5);
+ var results = Model.Entries.Skip(1).Where(e => e.Title.IndexOf(args.QueryText, StringComparison.OrdinalIgnoreCase) >= 0).Take(5);
foreach (var result in results)
{
args.Request.SearchSuggestionCollection.AppendResultSuggestion(result.Title, result.ParentGroup.Name, result.Id, imageUri, string.Empty);
@@ -148,8 +146,7 @@ namespace ModernKeePass.Pages
private void SearchBox_OnResultSuggestionChosen(SearchBox sender, SearchBoxResultSuggestionChosenEventArgs args)
{
- var viewModel = DataContext as GroupVm;
- var entry = viewModel?.Entries.Skip(1).FirstOrDefault(e => e.Id == args.Tag);
+ var entry = Model.Entries.Skip(1).FirstOrDefault(e => e.Id == args.Tag);
Frame.Navigate(typeof(EntryDetailPage), entry);
}
diff --git a/ModernKeePass/Pages/NewDatabasePage.xaml.cs b/ModernKeePass/Pages/NewDatabasePage.xaml.cs
index ea0e750..c0dc6dd 100644
--- a/ModernKeePass/Pages/NewDatabasePage.xaml.cs
+++ b/ModernKeePass/Pages/NewDatabasePage.xaml.cs
@@ -18,6 +18,8 @@ namespace ModernKeePass.Pages
{
private Frame _mainFrame;
+ public OpenVm Model => (OpenVm)DataContext;
+
public NewDatabasePage()
{
InitializeComponent();
@@ -40,8 +42,7 @@ namespace ModernKeePass.Pages
var file = await savePicker.PickSaveFileAsync();
if (file == null) return;
- var viewModel = DataContext as OpenVm;
- viewModel?.OpenFile(file);
+ Model.OpenFile(file);
}
private void PasswordUserControl_PasswordChecked(object sender, PasswordEventArgs e)
diff --git a/ModernKeePass/Pages/OpenDatabasePage.xaml.cs b/ModernKeePass/Pages/OpenDatabasePage.xaml.cs
index caa6b45..7f3fa85 100644
--- a/ModernKeePass/Pages/OpenDatabasePage.xaml.cs
+++ b/ModernKeePass/Pages/OpenDatabasePage.xaml.cs
@@ -17,6 +17,8 @@ namespace ModernKeePass.Pages
{
private Frame _mainFrame;
+ public OpenVm Model => (OpenVm)DataContext;
+
public OpenDatabasePage()
{
InitializeComponent();
@@ -38,9 +40,8 @@ namespace ModernKeePass.Pages
};
picker.FileTypeFilter.Add(".kdbx");
- var viewModel = DataContext as OpenVm;
// Application now has read/write access to the picked file
- viewModel?.OpenFile(await picker.PickSingleFileAsync());
+ Model.OpenFile(await picker.PickSingleFileAsync());
}
private void PasswordUserControl_PasswordChecked(object sender, PasswordEventArgs e)
diff --git a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
index 84f39b9..c3c60dc 100644
--- a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
+++ b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
@@ -16,6 +16,8 @@ namespace ModernKeePass.Pages
{
private Frame _mainFrame;
+ public RecentVm Model => (RecentVm)DataContext;
+
public RecentDatabasesPage()
{
InitializeComponent();
@@ -34,10 +36,8 @@ namespace ModernKeePass.Pages
private void OpenDatabaseUserControl_OnValidationChecking(object sender, EventArgs e)
{
- //throw new NotImplementedException();
- var viewModel = DataContext as RecentVm;
var app = (App)Application.Current;
- app.Database.DatabaseFile = viewModel?.SelectedItem.DatabaseFile;
+ app.Database.DatabaseFile = Model.SelectedItem.DatabaseFile;
}
}
}
diff --git a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
index e93ae73..dccfb00 100644
--- a/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
+++ b/ModernKeePass/Pages/SaveDatabasePage.xaml.cs
@@ -16,6 +16,7 @@ namespace ModernKeePass.Pages
public sealed partial class SaveDatabasePage
{
private Frame _mainFrame;
+ public SaveVm Model => (SaveVm)DataContext;
public SaveDatabasePage()
{
InitializeComponent();
@@ -29,8 +30,7 @@ namespace ModernKeePass.Pages
private void SaveButton_OnClick(object sender, RoutedEventArgs e)
{
- var viewModel = DataContext as SaveVm;
- viewModel?.Save();
+ Model.Save();
_mainFrame.Navigate(typeof(MainPage));
}
@@ -45,8 +45,7 @@ namespace ModernKeePass.Pages
var file = await savePicker.PickSaveFileAsync();
if (file == null) return;
- var viewModel = DataContext as SaveVm;
- viewModel?.Save(file);
+ Model.Save(file);
_mainFrame.Navigate(typeof(MainPage));
}
diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs
index 973c983..cb9a28f 100644
--- a/ModernKeePass/ViewModels/EntryVm.cs
+++ b/ModernKeePass/ViewModels/EntryVm.cs
@@ -14,6 +14,7 @@ namespace ModernKeePass.ViewModels
public System.Drawing.Color? BackgroundColor => Entry?.BackgroundColor;
public System.Drawing.Color? ForegroundColor => Entry?.ForegroundColor;
+ public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
public string Title
{
diff --git a/ModernKeePass/ViewModels/Items/RecentItemVm.cs b/ModernKeePass/ViewModels/Items/RecentItemVm.cs
index 412e04e..8091283 100644
--- a/ModernKeePass/ViewModels/Items/RecentItemVm.cs
+++ b/ModernKeePass/ViewModels/Items/RecentItemVm.cs
@@ -18,7 +18,7 @@ namespace ModernKeePass.ViewModels
public StorageFile DatabaseFile { get; private set; }
public string Token { get; private set; }
- public string Name { get; private set; }
+ public string Name { get; private set; } = "Recent file";
public string Path => DatabaseFile.Path;
public bool IsSelected