diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml
index a2a3a44..eb7ed65 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml
@@ -63,13 +63,15 @@
AutomationProperties.ItemType="Navigation Button"/>
+ Margin="0,0,30,0"
+ PlaceholderText="New entry name..."/>
diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
index 72c6d50..b405860 100644
--- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs
@@ -1,9 +1,11 @@
using System;
+using System.Threading.Tasks;
+using Windows.UI.Core;
using Windows.UI.Popups;
-using ModernKeePass.Common;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
+using ModernKeePass.Common;
using ModernKeePass.ViewModels;
// Pour en savoir plus sur le modèle d'élément Page Détail de l'élément, consultez la page http://go.microsoft.com/fwlink/?LinkId=234232
@@ -16,7 +18,9 @@ namespace ModernKeePass.Pages
///
public sealed partial class EntryDetailPage
{
- private NavigationHelper navigationHelper;
+ private NavigationHelper navigationHelper;
+
+ public EntryVm Model => (EntryVm) DataContext;
///
/// NavigationHelper est utilisé sur chaque page pour faciliter la navigation et
@@ -58,10 +62,12 @@ namespace ModernKeePass.Pages
protected override void OnNavigatedTo(NavigationEventArgs e)
{
navigationHelper.OnNavigatedTo(e);
- if (e.Parameter is EntryVm)
- {
- DataContext = e.Parameter as EntryVm;
- }
+ if (!(e.Parameter is EntryVm)) return;
+ DataContext = (EntryVm)e.Parameter;
+ if (Model.IsEditMode)
+ Task.Factory.StartNew(
+ () => Dispatcher.RunAsync(CoreDispatcherPriority.Low,
+ () => TitleTextBox.Focus(FocusState.Programmatic)));
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml b/ModernKeePass/Pages/GroupDetailPage.xaml
index 0d80490..0c69941 100644
--- a/ModernKeePass/Pages/GroupDetailPage.xaml
+++ b/ModernKeePass/Pages/GroupDetailPage.xaml
@@ -220,13 +220,15 @@
AutomationProperties.ItemType="Navigation Button"/>
+ Margin="0,0,30,0"
+ PlaceholderText="New group name..."/>
diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml.cs b/ModernKeePass/Pages/GroupDetailPage.xaml.cs
index 1d4893b..dbfe124 100644
--- a/ModernKeePass/Pages/GroupDetailPage.xaml.cs
+++ b/ModernKeePass/Pages/GroupDetailPage.xaml.cs
@@ -1,10 +1,13 @@
using System;
using System.Linq;
+using System.Threading.Tasks;
using Windows.Storage.Streams;
+using Windows.UI.Core;
using Windows.UI.Popups;
-using ModernKeePass.Common;
+using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
+using ModernKeePass.Common;
using ModernKeePass.ViewModels;
// The Group Detail Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234229
@@ -61,6 +64,10 @@ namespace ModernKeePass.Pages
if (!(e.Parameter is GroupVm)) return;
DataContext = (GroupVm) e.Parameter;
+ if (Model.IsEditMode)
+ Task.Factory.StartNew(
+ () => Dispatcher.RunAsync(CoreDispatcherPriority.Low,
+ () => TitleTextBox.Focus(FocusState.Programmatic)));
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
@@ -75,32 +82,36 @@ namespace ModernKeePass.Pages
private void groups_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- if (LeftListView.SelectedIndex == 0)
+ GroupVm group;
+ switch (LeftListView.SelectedIndex)
{
- var currentGroup = DataContext as GroupVm;
- currentGroup?.CreateNewGroup();
- LeftListView.SelectedIndex = -1;
- // TODO: Navigate to new group?
- return;
+ case -1:
+ return;
+ case 0:
+ group = Model.CreateNewGroup();
+ break;
+ default:
+ group = LeftListView.SelectedItem as GroupVm;
+ break;
}
- var selectedItem = LeftListView.SelectedItem as GroupVm;
- if (selectedItem == null) return;
- Frame.Navigate(typeof(GroupDetailPage), selectedItem);
+ Frame.Navigate(typeof(GroupDetailPage), group);
}
private void entries_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
+ EntryVm entry;
switch (GridView.SelectedIndex)
{
case -1:
return;
case 0:
- Model.CreateNewEntry();
- GridView.SelectedIndex = -1;
- // TODO: Navigate to new entry?
- return;
+ entry = Model.CreateNewEntry();
+ break;
+ default:
+ entry = GridView.SelectedItem as EntryVm;
+ break;
}
- Frame.Navigate(typeof(EntryDetailPage), GridView.SelectedItem as EntryVm);
+ Frame.Navigate(typeof(EntryDetailPage), entry);
}
private async void DeleteButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
@@ -128,6 +139,7 @@ namespace ModernKeePass.Pages
private void SemanticZoom_ViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e)
{
+ // We need to synchronize the two lists (zoomed-in and zoomed-out) because the source is different
if (e.IsSourceZoomedInView == false)
{
e.DestinationItem.Item = e.SourceItem.Item;
diff --git a/ModernKeePass/ViewModels/GroupVm.cs b/ModernKeePass/ViewModels/GroupVm.cs
index 27a888b..9d5f73b 100644
--- a/ModernKeePass/ViewModels/GroupVm.cs
+++ b/ModernKeePass/ViewModels/GroupVm.cs
@@ -76,18 +76,22 @@ namespace ModernKeePass.ViewModels
Groups.Insert(0, new GroupVm ());
}
- public void CreateNewGroup()
+ public GroupVm CreateNewGroup()
{
- var pwGroup = new PwGroup(true, true, "New group", PwIcon.Folder);
+ var pwGroup = new PwGroup(true, true, string.Empty, PwIcon.Folder);
_pwGroup.AddGroup(pwGroup, true);
- Groups.Add(new GroupVm(pwGroup, this));
+ var newGroup = new GroupVm(pwGroup, this) {IsEditMode = true};
+ Groups.Add(newGroup);
+ return newGroup;
}
- public void CreateNewEntry()
+ public EntryVm CreateNewEntry()
{
var pwEntry = new PwEntry(true, true);
_pwGroup.AddEntry(pwEntry, true);
- Entries.Add(new EntryVm(pwEntry, this));
+ var newEntry = new EntryVm(pwEntry, this) {IsEditMode = true};
+ Entries.Add(newEntry);
+ return newEntry;
}
public void RemoveGroup()