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));
        }
示例#2
0
        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,
            });
        }
示例#3
0
        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);
        }
示例#4
0
 public abstract IEnumerable <BasicMenuItem> GetContextMenuItems(ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper);
示例#5
0
 public override IEnumerable <BasicMenuItem> GetContextMenuItems(ILibraryExplorerViewModel libraryExplorerViewModel, IAdviseGroupHelper adviseGroupHelper)
 {
     return(Enumerable.Empty <BasicMenuItem>());
 }
示例#6
0
        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));
 }