add "Remove from this group" context menu action

This commit is contained in:
2026-05-07 21:44:58 +03:00
parent 1bde43cc24
commit e66fe7c1ba
3 changed files with 29 additions and 0 deletions

View File

@@ -143,6 +143,16 @@ public class UnlockedRepositoryViewModel : ViewModelBase
return true; return true;
} }
public void RemoveEntryFromGroup(PassStoreEntry entry)
{
if (currentDirectory.GroupType == FileFormatConstants.GROUP_TYPE_DEFAULT)
return;
passStore.DeleteEntry(currentDirectory, entry.Id);
HasUnsavedChanges = true;
OnPropertyChanged(nameof(Passwords));
}
public void UpdateEntry(PassStoreEntryPassword updatedEntry) public void UpdateEntry(PassStoreEntryPassword updatedEntry)
{ {
passStore.UpdateEntry(null, updatedEntry.Id, updatedEntry); passStore.UpdateEntry(null, updatedEntry.Id, updatedEntry);

View File

@@ -159,6 +159,7 @@
<MenuItem Name="entryCtxMenuCopyPassword" Header="Copy password" Click="EntryContextMenuItem_Click"/> <MenuItem Name="entryCtxMenuCopyPassword" Header="Copy password" Click="EntryContextMenuItem_Click"/>
<MenuItem Name="entryCtxMenuEdit" Header="Edit" Click="EntryContextMenuItem_Click"/> <MenuItem Name="entryCtxMenuEdit" Header="Edit" Click="EntryContextMenuItem_Click"/>
<MenuItem Name="entryCtxMenuAddToGroup" Header="Add to group" /> <MenuItem Name="entryCtxMenuAddToGroup" Header="Add to group" />
<MenuItem Name="entryCtxMenuRemoveFromGroup" Header="Remove from this group" Click="EntryContextMenuItem_Click" />
<MenuItem Name="entryCtxMenuDelete" Header="Delete" Click="EntryContextMenuItem_Click"/> <MenuItem Name="entryCtxMenuDelete" Header="Delete" Click="EntryContextMenuItem_Click"/>
</ContextMenu> </ContextMenu>
</Border.ContextMenu> </Border.ContextMenu>

View File

@@ -242,6 +242,16 @@ public partial class RepositoryWindow : Window
.OfType<MenuItem>() .OfType<MenuItem>()
.FirstOrDefault(m => m.Name == "entryCtxMenuAddToGroup"); .FirstOrDefault(m => m.Name == "entryCtxMenuAddToGroup");
var removeFromGroupItem = contextMenu.Items
.OfType<MenuItem>()
.FirstOrDefault(m => m.Name == "entryCtxMenuRemoveFromGroup");
var isNonDefaultGroup = pageVm.SelectedPasswordGroup.GroupType != FileFormatConstants.GROUP_TYPE_DEFAULT;
if (removeFromGroupItem != null)
{
removeFromGroupItem.IsVisible = isNonDefaultGroup;
}
if (addToGroupItem == null) if (addToGroupItem == null)
return; return;
@@ -309,6 +319,14 @@ public partial class RepositoryWindow : Window
EditEntry(vm, pageVm, ent); EditEntry(vm, pageVm, ent);
} }
} }
else if (s.Name == "entryCtxMenuRemoveFromGroup")
{
if (DataContext is RepositoryWindowViewModel vm && vm.CurrentPage is UnlockedRepositoryViewModel pageVm)
{
pageVm.RemoveEntryFromGroup(ent);
this.FindControlRecursive<ToastNotificationHost>("NotificationHost")?.Show("Removed from group");
}
}
else if (s.Name == "entryCtxMenuDelete") else if (s.Name == "entryCtxMenuDelete")
{ {
if (DataContext is RepositoryWindowViewModel vm && vm.CurrentPage is UnlockedRepositoryViewModel pageVm) if (DataContext is RepositoryWindowViewModel vm && vm.CurrentPage is UnlockedRepositoryViewModel pageVm)