Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 5
0
        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));
        }