protected static IReadOnlyCollection <BasicMenuItem> GetAdviseGroupMenuItems(BasicAdviseGroupHolder adviseGroupHolder, ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper) { var menuItems = new List <BasicMenuItem> { new CommandMenuItem(() => libraryExplorerViewModel.CreateAdviseGroup(adviseGroupHolder, CancellationToken.None)) { Header = "New Advise Group ...", IconKind = PackIconKind.FolderPlus, }, }; var currentAdviseGroup = adviseGroupHolder.CurrentAdviseGroup; if (currentAdviseGroup != null) { var reverseFavoriteMenuItem = new CommandMenuItem(() => adviseGroupHelper.ReverseFavoriteStatus(currentAdviseGroup, CancellationToken.None)) { Header = $"{(currentAdviseGroup.IsFavorite ? "Unmark" : "Mark")} '{currentAdviseGroup.Name}' as favorite", IconKind = currentAdviseGroup.IsFavorite ? PackIconKind.HeartBroken : PackIconKind.Heart, }; menuItems.Add(reverseFavoriteMenuItem); } var adviseGroups = adviseGroupHelper.AdviseGroups; if (adviseGroups.Any()) { menuItems.Add(new SeparatorMenuItem()); menuItems.AddRange(adviseGroups.Select(x => CreateSetAdviseGroupMenuItem(adviseGroupHolder, adviseGroupHelper, x))); } return(menuItems); }
public async Task CreateAdviseGroup(BasicAdviseGroupHolder adviseGroupHolder, CancellationToken cancellationToken) { var newAdviseGroupName = viewNavigator.ShowCreateAdviseGroupView(adviseGroupHolder.InitialAdviseGroupName, adviseGroupHelper.AdviseGroups.Select(x => x.Name)); if (newAdviseGroupName == null) { return; } await adviseGroupHelper.CreateAdviseGroup(adviseGroupHolder, newAdviseGroupName, cancellationToken); }
private static CommandMenuItem CreateSetAdviseGroupMenuItem(BasicAdviseGroupHolder adviseGroupHolder, IAdviseGroupHelper adviseGroupHelper, AdviseGroupModel adviseGroup) { PackIconKind?iconKind = null; if (adviseGroup.Id == adviseGroupHolder.CurrentAdviseGroup?.Id) { // We do not use checkable menu items, because there is no easy way to have checkable item with an icon (https://stackoverflow.com/questions/3842493). iconKind = PackIconKind.Check; } if (adviseGroup.IsFavorite) { iconKind = PackIconKind.Heart; } return(new CommandMenuItem(() => adviseGroupHelper.ReverseAdviseGroup(adviseGroupHolder, adviseGroup, CancellationToken.None)) { Header = adviseGroup.Name, IconKind = iconKind, }); }
public static IReadOnlyCollection <BasicMenuItem> InvokeGetAdviseGroupMenuItems( BasicAdviseGroupHolder adviseGroupHolder, ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper) { return(GetAdviseGroupMenuItems(adviseGroupHolder, libraryExplorerViewModel, adviseGroupHelper)); }