public void NextSong(bool isUserRequested) { if (!IsMixPresent) { return; } if (currentMix.GetCurrentTrack().IsLast) { NextMix(); return; } if (currentMix.CurrentTrackIndex == currentMix.Tracks.Count - 1) { NextSongRequest nextSongRequest = requestFactory.CreateNextSongRequest(playToken, currentMix.MixId, isUserRequested); PlaySongResponse playSongReponse = requestExecutor.ExecuteNextSongRequest(nextSongRequest); currentMix.AddTrack(new Track(playSongReponse.SetElement.TrackElement, playSongReponse.SetElement.AtLastTrack, playSongReponse.SetElement.SkipAllowed)); } currentMix.MoveToNextTrack(); if (audioPlayerProxy.Status == MediaStatus.Running) { PlayCurrentTrack(currentMix); } }
public void Play(Mix mix) { if (playToken.Length == 0) { playToken = GetPlayToken(); } if (mix.Tracks.Count == 0) { PlayMixRequest playMixRequest = requestFactory.CreatePlayMixRequest(playToken, mix.MixId); PlaySongResponse playSongReponse = requestExecutor.ExecutePlayMixRequest(playMixRequest); Track openingTrack = new Track(playSongReponse.SetElement.TrackElement, playSongReponse.SetElement.AtLastTrack, playSongReponse.SetElement.SkipAllowed); if (String.IsNullOrEmpty(openingTrack.Uri)) { return; } mix.AddTrack(openingTrack); } // in case we want to play the same mix again, // it means we don't change anything in the UI // just reset the counter and start again if (currentMix == null || !mix.RestfulUri.Equals(currentMix.RestfulUri)) { currentMix = mix; currentMixObservable.OnNext(currentMix); } currentMix.ResetTrackIndex(); PlayCurrentTrack(currentMix); }
private void TheApplicationDeserializesThePlaySongResponse() { try { playSongResponse = (PlaySongResponse)deserializer.Deserialize(typeof(PlayMixRequest), responseString); } catch (Exception ex) { exception = ex; } }
public void ResetFields() { responseString = null; newPlayTokenResponse = null; mixesResponse = null; playSongResponse = null; loginResponse = null; exception = null; deserializer = new AggregatedResponseDeserializer(); }
public void SetUp() { // testScheduler = new TestScheduler(); // origSched = RxApp.DeferredScheduler; // RxApp.DeferredScheduler = testScheduler; playSongResponse = new PlaySongResponse() { SetElement = new SetElement() { TrackElement = new TrackElement() { Url = "some url" } } }; newPlayTokenResponse = new NewPlayTokenResponse() { PlayToken = "a-token" }; lockObject = new ManualResetEvent(false); requestExecutor = new RequestExecutorStub(); audioPlayerStub = new AudioPlayerStub(); playbackController = new PlaybackController(audioPlayerStub, requestExecutor); authenticator = new Authenticator(requestExecutor, new SettingsStub()); mediaLibraryBrowser = new MediaLibraryBrowser(requestExecutor); requestExecutor.Responses.Add(new LoginResponse() { LoggedIn = false, CurrentUserElement = new CurrentUserElement() { Login = "******", Slug = "userSlug" } }); loginFormViewModel = new LoginFormViewModel(authenticator); playbackViewModel = new PlaybackViewModel(playbackController, new SettingsStub(), new MixViewModelFactory(playbackController, mediaLibraryBrowser, loginFormViewModel.UserLoggedInObservable)); }