private async Task AddItemToPlaylist(ISubsonicModel item) { if (item.Type == SubsonicModelTypeEnum.Song || item.Type == SubsonicModelTypeEnum.Video) { var addItemsMessage = new AddItemsMessage { Queue = new List<Client.Common.Models.PlaylistItem>(new[] { await LoadModel(item) }) }; EventAggregator.Publish(addItemsMessage); if (_playNextItem) { _playNextItem = false; EventAggregator.Publish(new PlayNextMessage()); } } else { var children = new List<ISubsonicModel>(); switch (item.Type) { case SubsonicModelTypeEnum.Album: { await SubsonicService.GetAlbum(item.Id) .WithErrorHandler(this) .OnSuccess(result => children.AddRange(result.Songs)) .Execute(); } break; case SubsonicModelTypeEnum.Artist: { await SubsonicService.GetArtist(item.Id) .WithErrorHandler(this) .OnSuccess(result => children.AddRange(result.Albums)) .Execute(); } break; case SubsonicModelTypeEnum.MusicDirectory: { await SubsonicService.GetMusicDirectory(item.Id) .WithErrorHandler(this) .OnSuccess(result => children.AddRange(result.Children)) .Execute(); } break; case SubsonicModelTypeEnum.Index: { children.AddRange(((IndexItem)item).Artists); } break; } foreach (var subsonicModel in children) { await AddItemToPlaylist(subsonicModel); } } }
private async Task AddItemToPlaylist(ISubsonicModel item) { if (item.Type == SubsonicModelTypeEnum.Song || item.Type == SubsonicModelTypeEnum.Video) { var playlistItems = new List<PlaylistItem>(new[] { await LoadPlaylistItem(item) }); var addItemsMessage = new AddItemsMessage { Queue = playlistItems }; if (_playNextItem) { _playNextItem = false; addItemsMessage.StartPlaying = true; } EventAggregator.Publish(addItemsMessage); } else { var children = new List<ISubsonicModel>(); switch (item.Type) { case SubsonicModelTypeEnum.Album: { await SubsonicService.GetAlbum(item.Id) .WithErrorHandler(ErrorDialogViewModel) .OnSuccess(result => children.AddRange(result.Songs)) .Execute(); } break; case SubsonicModelTypeEnum.Artist: { await SubsonicService.GetArtist(item.Id) .WithErrorHandler(ErrorDialogViewModel) .OnSuccess(result => children.AddRange(result.Albums)) .Execute(); } break; case SubsonicModelTypeEnum.MusicDirectory: { await SubsonicService.GetMusicDirectory(item.Id) .WithErrorHandler(ErrorDialogViewModel) .OnSuccess(result => children.AddRange(result.Children)) .Execute(); } break; case SubsonicModelTypeEnum.Index: { children.AddRange(((IndexItem)item).Artists); } break; case SubsonicModelTypeEnum.Folder: { await SubsonicService.GetIndex(item.Id) .WithErrorHandler(ErrorDialogViewModel) .OnSuccess(result => children.AddRange(result.Artists)) .Execute(); } break; } foreach (var subsonicModel in children) { await AddItemToPlaylist(subsonicModel); } } }
public void Handle(AddItemsMessage message) { if (message.Queue.Count == 0) return; Items.AddRange(message.Queue); if (message.StartPlaying) { StartPlaybackAction(Items.Count - message.Queue.Count); } }
public void Handle(AddItemsMessage message) { throw new System.NotImplementedException(); }
public void Handle(AddItemsMessage message) { }
public void Handle(AddItemsMessage message) { Items.AddRange(message.Queue); }