public static void AddSongsToFirstPlaylist(this IAudioService service, IEnumerable <Song> songs, bool prepend, IInvokeDispatcherHelper helper) { songs = songs as Song[] ?? songs.ToArray(); if (!songs.Any()) { return; } IPlaylist currentPlaylist = service.CurrentPlaylist; Song? currentSong = currentPlaylist?.CurrentSong; if (service.Playlists.Count > 0) { IPlaylist playlist = service.Playlists[0]; if (playlist.ID == currentPlaylist?.ID) { if (prepend) { playlist.Songs = songs.Concat(playlist.Songs).Distinct().ToArray(); playlist.WannaSong = RequestSong.Start(songs.First()); } else { playlist.Songs = playlist.Songs.Concat(songs).Distinct().ToArray(); } } else { if (prepend || !currentSong.HasValue) { playlist.Songs = songs.Distinct().ToArray(); playlist.WannaSong = RequestSong.Start(songs.First()); playlist.Duration = currentPlaylist.Duration; playlist.Position = currentPlaylist.Position; service.CurrentPlaylist = playlist; } else { playlist.Songs = songs.Insert(0, currentSong.Value).Distinct().ToArray(); playlist.WannaSong = RequestSong.Get(currentSong.Value, null, currentPlaylist.Duration); service.CurrentPlaylist = playlist; currentPlaylist.CurrentSong = currentPlaylist.Songs.Cast <Song?>() .NextOrDefault(currentSong).next; currentPlaylist.Position = TimeSpan.Zero; currentPlaylist.WannaSong = RequestSong.Start(currentPlaylist.CurrentSong); } } } else { IPlaylist playlist = new Playlist(helper) { Name = "Custom", Loop = LoopType.Next, Shuffle = OrderType.Custom }; if (prepend || !currentSong.HasValue) { playlist.Songs = songs.ToArray(); playlist.WannaSong = RequestSong.Start(songs.First()); playlist.Duration = currentPlaylist.Duration; playlist.Position = currentPlaylist.Position; service.Playlists.Add(playlist); service.CurrentPlaylist = playlist; } else { playlist.Songs = songs.Insert(0, currentSong.Value).ToArray(); playlist.WannaSong = RequestSong.Get(currentSong.Value, null, currentPlaylist.Duration); service.Playlists.Add(playlist); service.CurrentPlaylist = playlist; currentPlaylist.CurrentSong = currentPlaylist.Songs.Cast <Song?>() .NextOrDefault(currentSong).next; currentPlaylist.Position = TimeSpan.Zero; currentPlaylist.WannaSong = RequestSong.Start(currentPlaylist.CurrentSong); } } }
public OwnTcpClientCommunicator(string serverAddress, int port, IInvokeDispatcherHelper helper) { ServerAddress = serverAddress; Port = port; this.helper = helper; }
public static void AddSongsToFirstPlaylist(this IAudioService service, IEnumerable <Song> songs, IInvokeDispatcherHelper helper) { AddSongsToFirstPlaylist(service, songs, false, helper); }