public LibraryExplorerViewModel(ILibraryExplorerItemListViewModel itemListViewModel, IFoldersService foldersService, IAdviseGroupHelper adviseGroupHelper, IViewNavigator viewNavigator, IWindowService windowService) { ItemListViewModel = itemListViewModel ?? throw new ArgumentNullException(nameof(itemListViewModel)); this.foldersService = foldersService ?? throw new ArgumentNullException(nameof(foldersService)); this.adviseGroupHelper = adviseGroupHelper ?? throw new ArgumentNullException(nameof(adviseGroupHelper)); this.viewNavigator = viewNavigator ?? throw new ArgumentNullException(nameof(viewNavigator)); this.windowService = windowService ?? throw new ArgumentNullException(nameof(windowService)); Messenger.Default.Register <ApplicationLoadedEventArgs>(this, e => OnApplicationLoaded(CancellationToken.None)); Messenger.Default.Register <LoadParentFolderEventArgs>(this, OnLoadParentFolder); Messenger.Default.Register <LoadFolderEventArgs>(this, e => OnLoadFolder(e.Folder)); Messenger.Default.Register <PlaySongsListEventArgs>(this, OnPlaySongsList); Messenger.Default.Register <PlaylistLoadedEventArgs>(this, e => OnPlaylistLoaded(e, CancellationToken.None)); Messenger.Default.Register <NoPlaylistLoadedEventArgs>(this, _ => OnNoPlaylistLoaded(CancellationToken.None)); Messenger.Default.Register <NavigateLibraryExplorerToDiscEventArgs>(this, e => OnSwitchToDisc(e.Disc)); }
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, }); }
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 abstract IEnumerable <BasicMenuItem> GetContextMenuItems(ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper);
public override IEnumerable <BasicMenuItem> GetContextMenuItems(ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper) { return(Enumerable.Empty <BasicMenuItem>()); }
public override IEnumerable <BasicMenuItem> GetContextMenuItems(ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper) { if (IsDeleted) { yield break; } yield return(new ExpandableMenuItem { Header = "Set Advise Group", IconKind = PackIconKind.FolderStar, Items = GetAdviseGroupMenuItems(new FolderAdviseGroupHolder(Folder), libraryExplorerViewModel, adviseGroupHelper), }); yield return(new CommandMenuItem(() => libraryExplorerViewModel.RenameFolder(Folder), keepTargetAlive: true) { Header = "Rename Folder", IconKind = PackIconKind.Pencil, }); yield return(new CommandMenuItem(() => libraryExplorerViewModel.DeleteFolder(Folder, CancellationToken.None)) { Header = "Delete Folder", IconKind = PackIconKind.DeleteForever, }); }
public static IReadOnlyCollection <BasicMenuItem> InvokeGetAdviseGroupMenuItems( BasicAdviseGroupHolder adviseGroupHolder, ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper) { return(GetAdviseGroupMenuItems(adviseGroupHolder, libraryExplorerViewModel, adviseGroupHelper)); }