From dfb5ec9683678327c6675cea6a03abd5647cb274 Mon Sep 17 00:00:00 2001 From: bg45 Date: Fri, 6 Oct 2017 16:21:12 -0400 Subject: [PATCH] Semantic Zoom now has grouped zoomed out view New button to open browser to Entry Url Entries are now sorted alphabetically --- ModernKeePass/Pages/EntryDetailPage.xaml | 13 ++++++--- ModernKeePass/Pages/EntryDetailPage.xaml.cs | 13 +++++++++ ModernKeePass/Pages/GroupDetailPage.xaml | 29 ++++++++++++++++--- .../Pages/RecentDatabasesPage.xaml.cs | 1 + ModernKeePass/ViewModels/GroupVm.cs | 24 +++++++++++---- 5 files changed, 66 insertions(+), 14 deletions(-) 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 ()); }