private async void Group_Drop(object sender, DragEventArgs e)
        {
            FrameworkElement senderElement = sender as FrameworkElement;

            DebugHelper.Assert(senderElement != null);

            IDatabaseGroupViewModel groupVm = senderElement.DataContext as IDatabaseGroupViewModel;

            DebugHelper.Assert(groupVm != null);

            IKeePassGroup thisGroup = groupVm.Node as IKeePassGroup;

            DebugHelper.Assert(thisGroup != null);

            DragOperationDeferral deferral = e.GetDeferral();

            string encodedUuid = await e.DataView.GetTextAsync();

            if (thisGroup.TryAdopt(encodedUuid))
            {
                DebugHelper.Trace($"Successfully moved node {encodedUuid} to new parent {thisGroup.Uuid.EncodedValue}");
                e.AcceptedOperation = DataPackageOperation.Move;
            }
            else
            {
                DebugHelper.Trace($"WARNING: Unable to locate dropped node {encodedUuid}");
                e.AcceptedOperation = DataPackageOperation.None;
            }

            e.Handled = true;
            deferral.Complete();
        }
        private async void Group_DragEnter(object sender, DragEventArgs e)
        {
            FrameworkElement senderElement = sender as FrameworkElement;

            DebugHelper.Assert(senderElement != null);

            IDatabaseGroupViewModel groupVm = senderElement.DataContext as IDatabaseGroupViewModel;

            DebugHelper.Assert(groupVm != null);

            IKeePassGroup thisGroup = groupVm.Node as IKeePassGroup;

            DebugHelper.Assert(thisGroup != null);

            DragOperationDeferral deferral = e.GetDeferral();

            string text = await e.DataView.GetTextAsync();

            if (!String.IsNullOrWhiteSpace(text) && thisGroup.CanAdopt(text))
            {
                e.AcceptedOperation = DataPackageOperation.Move;
                e.Handled           = true;
            }

            deferral.Complete();
        }
Exemple #3
0
        /// <summary>
        /// Handles clicks on the Child GridView.
        /// </summary>
        /// <param name="sender">The Child GridView.</param>
        /// <param name="e">ClickEventArgs for the action.</param>
        private void ChildGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            bool wasFiltered = !String.IsNullOrEmpty(this.searchBox.Text);

            if (wasFiltered)
            {
                this.searchBox.Text = String.Empty;
            }

            // First check to see if it's an entry
            if (e.ClickedItem is IDatabaseEntryViewModel clickedEntry)
            {
                IKeePassEntry entry = clickedEntry.Node as IKeePassEntry;
                DebugHelper.Assert(entry != null);

                if (wasFiltered)
                {
                    ViewModel.NavigationViewModel.SetGroup(entry.Parent);
                }

                // For now, on item click, navigate to the EntryDetailsView.
                Frame.Navigate(
                    typeof(EntryDetailsView),
                    ViewModel.GetEntryDetailsViewModel(entry, /* editing */ false)
                    );
            }
            else
            {
                // We clicked a group, so drill into it...
                IDatabaseGroupViewModel clickedGroup = e.ClickedItem as IDatabaseGroupViewModel;
                DebugHelper.Assert(clickedGroup != null);

                clickedGroup.RequestOpenCommand.Execute(null);
            }
        }