From 013108f2ec66a73b8e1e3107f36b25a7dc8dc472 Mon Sep 17 00:00:00 2001 From: Geoffroy Bonneville Date: Tue, 3 Oct 2017 18:38:31 +0200 Subject: [PATCH] Major redesign in the Group Detail page: - groups and entries are inverted - groups are in a collapsable menu (to be improved!) --- ModernKeePass/Pages/EntryDetailPage.xaml.cs | 4 +- ModernKeePass/Pages/GroupDetailPage.xaml | 178 +++++++++++--------- ModernKeePass/Pages/GroupDetailPage.xaml.cs | 69 ++++---- ModernKeePass/ViewModels/EntryVm.cs | 2 - ModernKeePass/ViewModels/GroupVm.cs | 2 + 5 files changed, 138 insertions(+), 117 deletions(-) diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs index 6d89d31..b0cdaf7 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs +++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs @@ -41,9 +41,7 @@ namespace ModernKeePass.Pages /// lors de la requête initiale de cette page et /// un dictionnaire d'état conservé par cette page durant une session /// antérieure. L'état n'aura pas la valeur Null lors de la première visite de la page. - private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) - { - } + private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) {} #region Inscription de NavigationHelper diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml b/ModernKeePass/Pages/GroupDetailPage.xaml index 00e08b8..f479094 100644 --- a/ModernKeePass/Pages/GroupDetailPage.xaml +++ b/ModernKeePass/Pages/GroupDetailPage.xaml @@ -14,47 +14,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - - + Width="auto" + Background="LightGray" + Foreground="DarkSlateGray" + ItemsSource="{Binding Source={StaticResource GroupsViewSource}}" + SelectionChanged="groups_SelectionChanged" + IsSwipeEnabled="false" + IsSynchronizedWithCurrentItem="False" + DataContext="{Binding DataContext, ElementName=PageRoot}"> + + + - - - - - + + + + + + - + + + + + + + - - + - + @@ -192,4 +204,4 @@ - + \ No newline at end of file diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml.cs b/ModernKeePass/Pages/GroupDetailPage.xaml.cs index 558b782..00112fd 100644 --- a/ModernKeePass/Pages/GroupDetailPage.xaml.cs +++ b/ModernKeePass/Pages/GroupDetailPage.xaml.cs @@ -1,4 +1,5 @@ using System; +using Windows.UI.Xaml; using ModernKeePass.Common; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; @@ -19,13 +20,14 @@ namespace ModernKeePass.Pages /// process lifetime management /// public NavigationHelper NavigationHelper { get; } - - + public GroupDetailPage() { InitializeComponent(); NavigationHelper = new NavigationHelper(this); NavigationHelper.LoadState += navigationHelper_LoadState; + LeftListView.ItemTemplate = (DataTemplate)LeftListView.Resources["Collapsed"]; + LeftListView.HeaderTemplate = (DataTemplate)LeftListView.Resources["Forward"]; } /// @@ -39,9 +41,7 @@ namespace ModernKeePass.Pages /// when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited. - private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) - { - } + private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) {} #region NavigationHelper registration @@ -71,39 +71,33 @@ namespace ModernKeePass.Pages private void groups_SelectionChanged(object sender, SelectionChangedEventArgs e) { - GroupVm selectedItem = null; - if (sender is GridView) + if (LeftListView.SelectedIndex == 0) { - var gridView = (GridView) sender; - if (gridView.SelectedIndex == 0) - { - var currentGroup = DataContext as GroupVm; - currentGroup?.CreateNewGroup(); - gridView.SelectedIndex = -1; - // TODO: Navigate to new group? - return; - } - selectedItem = gridView.SelectedItem as GroupVm; + var currentGroup = DataContext as GroupVm; + currentGroup?.CreateNewGroup(); + LeftListView.SelectedIndex = -1; + // TODO: Navigate to new group? + return; } - if (sender is ListView) selectedItem = ((ListView) sender).SelectedItem as GroupVm; + var selectedItem = LeftListView.SelectedItem as GroupVm; if (selectedItem == null) return; Frame.Navigate(typeof(GroupDetailPage), selectedItem); } - - private void entriesListView_SelectionChanged(object sender, SelectionChangedEventArgs e) + private void entries_SelectionChanged(object sender, SelectionChangedEventArgs e) { - var listView = sender as ListView; - if (listView != null && listView.SelectedIndex == -1) return; - if (listView.SelectedIndex == 0) + switch (GridView.SelectedIndex) { - var currentGroup = DataContext as GroupVm; - currentGroup?.CreateNewEntry(); - listView.SelectedIndex = -1; - // TODO: Navigate to new entry? - return; + case -1: + return; + case 0: + var currentGroup = DataContext as GroupVm; + currentGroup?.CreateNewEntry(); + GridView.SelectedIndex = -1; + // TODO: Navigate to new entry? + return; } - Frame.Navigate(typeof(EntryDetailPage), listView?.SelectedItem as EntryVm); + Frame.Navigate(typeof(EntryDetailPage), GridView.SelectedItem as EntryVm); } private void AppBarButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) @@ -112,5 +106,22 @@ namespace ModernKeePass.Pages group?.RemoveGroup(); if (Frame.CanGoBack) Frame.GoBack(); } + + private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) + { + var button = sender as Button; + if (button == null) return; + switch (button.Name) + { + case "ForwardButton": + LeftListView.ItemTemplate = (DataTemplate) LeftListView.Resources["Expanded"]; + LeftListView.HeaderTemplate = (DataTemplate) LeftListView.Resources["Back"]; + break; + case "BackButton": + LeftListView.ItemTemplate = (DataTemplate)LeftListView.Resources["Collapsed"]; + LeftListView.HeaderTemplate = (DataTemplate)LeftListView.Resources["Forward"]; + break; + } + } } } diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs index 7c9f05d..19c09ad 100644 --- a/ModernKeePass/ViewModels/EntryVm.cs +++ b/ModernKeePass/ViewModels/EntryVm.cs @@ -46,8 +46,6 @@ namespace ModernKeePass.ViewModels public System.Drawing.Color? ForegroundColor => _pwEntry?.ForegroundColor; - public FontWeight FontWeight => _pwEntry == null ? FontWeights.Bold : FontWeights.Normal; - public Symbol IconSymbol { get diff --git a/ModernKeePass/ViewModels/GroupVm.cs b/ModernKeePass/ViewModels/GroupVm.cs index d2f14ff..e9d1747 100644 --- a/ModernKeePass/ViewModels/GroupVm.cs +++ b/ModernKeePass/ViewModels/GroupVm.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using System.Linq; +using Windows.UI.Text; using Windows.UI.Xaml.Controls; using ModernKeePass.Common; using ModernKeePass.Mappings; @@ -29,6 +30,7 @@ namespace ModernKeePass.ViewModels } public bool IsNotRoot => ParentGroup != null; + public FontWeight FontWeight => _pwGroup == null ? FontWeights.Bold : FontWeights.Normal; private readonly PwGroup _pwGroup; public GroupVm() {}