From 017675e16e5dddd31c8e8249093a98742200b6d2 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Sun, 27 Dec 2015 09:39:30 +0100 Subject: [PATCH] added option to copy an entry --- .../Kp2aBusinessLogic.csproj | 1 + src/Kp2aBusinessLogic/UiStringKey.cs | 3 ++- src/keepass2android/GroupBaseActivity.cs | 24 +++++++++++++++++-- .../Resources/menu/group_entriesselected.xml | 6 +++++ .../Resources/values/strings.xml | 3 +++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj index d49b3253..8cfad986 100644 --- a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj +++ b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj @@ -55,6 +55,7 @@ + diff --git a/src/Kp2aBusinessLogic/UiStringKey.cs b/src/Kp2aBusinessLogic/UiStringKey.cs index 614897d8..a47a2a8d 100644 --- a/src/Kp2aBusinessLogic/UiStringKey.cs +++ b/src/Kp2aBusinessLogic/UiStringKey.cs @@ -62,6 +62,7 @@ namespace keepass2android DeletingItems, AskDeletePermanentlyItems, AskDeletePermanentlyItemsNoRecycle, - InOfflineMode + InOfflineMode, + DuplicateTitle } } diff --git a/src/keepass2android/GroupBaseActivity.cs b/src/keepass2android/GroupBaseActivity.cs index 37a42588..b5078860 100644 --- a/src/keepass2android/GroupBaseActivity.cs +++ b/src/keepass2android/GroupBaseActivity.cs @@ -813,12 +813,12 @@ namespace keepass2android { return false; } - + Handler handler = new Handler(); switch (item.ItemId) { case Resource.Id.menu_delete: - Handler handler = new Handler(); + DeleteMultipleItems task = new DeleteMultipleItems((GroupBaseActivity)Activity, App.Kp2a.GetDb(), checkedItems, new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)), App.Kp2a); task.Start(); @@ -827,6 +827,15 @@ namespace keepass2android var navMove = new NavigateToFolderAndLaunchMoveElementTask(checkedItems.First().ParentGroup, checkedItems.Select(i => i.Uuid).ToList(), ((GroupBaseActivity)Activity).IsSearchResult); ((GroupBaseActivity)Activity).StartTask(navMove); break; + case Resource.Id.menu_copy: + + var copyTask = new CopyEntry((GroupBaseActivity)Activity, App.Kp2a, (PwEntry) checkedItems.First(), + new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity))); + + ProgressTask pt = new ProgressTask(App.Kp2a, Activity, copyTask); + pt.Run(); + break; + case Resource.Id.menu_navigate: NavigateToFolder navNavigate = new NavigateToFolder(checkedItems.First().ParentGroup, true); ((GroupBaseActivity)Activity).StartTask(navNavigate); @@ -897,6 +906,12 @@ namespace keepass2android { menuItem.SetVisible(((GroupBaseActivity)Activity).IsSearchResult && IsOnlyOneItemChecked()); } + + menuItem = mode.Menu.FindItem(Resource.Id.menu_copy); + if (menuItem != null) + { + menuItem.SetVisible(IsOnlyOneEntryChecked()); + } } private bool IsOnlyOneGroupChecked() @@ -949,6 +964,11 @@ namespace keepass2android } return hadCheckedItem; } + + private bool IsOnlyOneEntryChecked() + { + return IsOnlyOneItemChecked() && !IsOnlyOneGroupChecked(); + } } } diff --git a/src/keepass2android/Resources/menu/group_entriesselected.xml b/src/keepass2android/Resources/menu/group_entriesselected.xml index 54defd77..87ddeb2d 100644 --- a/src/keepass2android/Resources/menu/group_entriesselected.xml +++ b/src/keepass2android/Resources/menu/group_entriesselected.xml @@ -10,6 +10,12 @@ android:title="@string/menu_delete" android:showAsAction="always" /> + + Settings Database settings Delete + Create duplicate Move to another group Move Navigate to parent group @@ -553,6 +554,8 @@ Copying file... Change log + + Copy Please note! This is a preview release and might come with some flaws! If you experience *anything* unexpected, please let me know (on Codeplex or by email).