diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml
index d930cb9..54c390c 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml
@@ -38,13 +38,18 @@
-
+
-
-
+
+
-
+
+
+
+
diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
index 603c357..d17f8a1 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
@@ -76,5 +76,18 @@ namespace ModernKeePass.Pages
entry?.RemoveEntry();
if (Frame.CanGoBack) Frame.GoBack();
}
+
+ private async void UrlButton_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ var uri = new Uri(urlTextBox.Text);
+ await Windows.System.Launcher.LaunchUriAsync(uri);
+ }
+ catch
+ {
+ // TODO: Show some error
+ }
+ }
}
}
diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml b/ModernKeePass/Pages/GroupDetailPage.xaml
index b024d49..42e6365 100644
--- a/ModernKeePass/Pages/GroupDetailPage.xaml
+++ b/ModernKeePass/Pages/GroupDetailPage.xaml
@@ -27,7 +27,10 @@
Source="{Binding Groups}"/>
+ Source="{Binding Entries}" />
+
@@ -170,15 +173,33 @@
+ IsSynchronizedWithCurrentItem="False">
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
index 1aeeeba..e293fa5 100644
--- a/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
+++ b/ModernKeePass/Pages/RecentDatabasesPage.xaml.cs
@@ -43,6 +43,7 @@ namespace ModernKeePass.Pages
var mru = StorageApplicationPermissions.MostRecentlyUsedList;
var file = await mru.GetFileAsync(recentVm.SelectedItem.Token);
+ // TODO: this closes the current opened database
var app = (App)Application.Current;
app.Database = new DatabaseHelper(file);
}
diff --git a/ModernKeePass/ViewModels/GroupVm.cs b/ModernKeePass/ViewModels/GroupVm.cs
index 4da682b..27a888b 100644
--- a/ModernKeePass/ViewModels/GroupVm.cs
+++ b/ModernKeePass/ViewModels/GroupVm.cs
@@ -12,18 +12,32 @@ namespace ModernKeePass.ViewModels
{
public GroupVm ParentGroup { get; }
public ObservableCollection Entries { get; set; } = new ObservableCollection();
+
public ObservableCollection Groups { get; set; } = new ObservableCollection();
- public int EntryCount => Entries.Count - 1;
+ public int EntryCount => Entries.Count() - 1;
public int GroupCount => Groups.Count - 1;
public bool IsNotRoot => ParentGroup != null;
public FontWeight FontWeight => _pwGroup == null ? FontWeights.Bold : FontWeights.Normal;
-
+
+ public IOrderedEnumerable> EntriesZoomedOut
+ {
+ get
+ {
+ return from e in Entries
+ where e.Entry != null
+ group e by e.Title.FirstOrDefault() into grp
+ orderby grp.Key
+ select grp;
+ }
+ }
+
public string Name
{
get { return _pwGroup == null ? "New group" : _pwGroup.Name; }
set { _pwGroup.Name = value; }
}
+
public Symbol IconSymbol
{
get
@@ -56,11 +70,9 @@ namespace ModernKeePass.ViewModels
{
_pwGroup = pwGroup;
ParentGroup = parent;
- Entries = new ObservableCollection(pwGroup.Entries.Select(e => new EntryVm(e, this)));
+ Entries = new ObservableCollection(pwGroup.Entries.Select(e => new EntryVm(e, this)).OrderBy(e => e.Title));
Entries.Insert(0, new EntryVm ());
- //Entries.Add(new EntryVm { Title = " New entry" });
- Groups = new ObservableCollection(pwGroup.Groups.Select(g => new GroupVm(g, this)));
- //Groups.Insert(0, new GroupVm { Name = " + New group" });
+ Groups = new ObservableCollection(pwGroup.Groups.Select(g => new GroupVm(g, this)).OrderBy(g => g.Name));
Groups.Insert(0, new GroupVm ());
}