public void When_no_item_playing_then_should_not_change_play_state()
        {
            var eventAgg = new Mock <IEventAggregator>();
            var vm       = new NowPlayingViewModel(eventAgg.Object, new Mock <IMediaItemPersister>().Object);

            Assert.IsFalse(vm.CanPlayPause);
            Assert.IsFalse(vm.CanStop);

            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            vm.MediaPlayerState = PlayerState.Paused;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);

            // now, requesting an item to be played should allow the state change
            var media = new Mock <MediaItem>();

            vm.Handle(new PlayRequestMessage(media.Object));

            Assert.IsTrue(vm.CanPlayPause);
            Assert.IsTrue(vm.CanStop);
            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
            Assert.AreEqual("Pause", vm.PlayPauseText);
        }
示例#2
0
        void slider_PointerCaptureLost(object sender, PointerRoutedEventArgs e)
        {
            NowPlayingViewModel viewModel = (NowPlayingViewModel)DataContext;

            viewModel.sliderpressed = false;
            viewModel.SendMessage(AppConstants.Position, TimeSpan.FromSeconds(progressbar.Value));
        }
示例#3
0
        public CompactView()
        {
            InitializeComponent();

            _viewModel       = new NowPlayingViewModel();
            this.DataContext = _viewModel;
        }
示例#4
0
 public NowPlayingView2()
 {
     this.InitializeComponent();
     this.navigationHelper            = new NavigationHelper(this);
     this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
     this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
     viewModel = (NowPlayingViewModel)DataContext;
 }
        public NowPlayingPage()
        {
            InitializeComponent();

            Loaded += new RoutedEventHandler(NowPlayingPage_Loaded);
            DataContext = new NowPlayingViewModel(this.Dispatcher);
            ((INotifyPropertyChanged)DataContext).PropertyChanged += new PropertyChangedEventHandler(NowPlayingPage_PropertyChanged);
        }
示例#6
0
        void progressbar_ValueChanged(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e)
        {
            NowPlayingViewModel viewModel = (NowPlayingViewModel)DataContext;

            if (!viewModel.sliderpressed)
            {
                viewModel.SendMessage(AppConstants.Position, TimeSpan.FromSeconds(e.NewValue));
            }
        }
示例#7
0
        protected override void OnStart()
        {
            NowPlayingViewModel.GetInstance().AppOnResume();

            object mode = service.GetDataFromProperties(FileState.PlayMode.ToString());

            if (mode != null)
            {
                NowPlay.playMode = (PlayMode)Enum.Parse(typeof(PlayMode), mode.ToString());
            }
        }
示例#8
0
        public ShellViewModel(IEnumerable <IAppWidget> widgets, IEventAggregator eventAgg, IWindowManager windowMgr, NowPlayingViewModel nowPlaying, NavigationBarViewModel navBar)
        {
            this.eventAgg   = eventAgg;
            this.nowPlaying = nowPlaying;
            this.navBar     = navBar;
            this.windowMgr  = windowMgr;

            eventAgg.Subscribe(this);
            Widgets = new BindableCollection <IAppWidget>(widgets.OrderBy(x => x.Name));
            ActivateWidget(Widgets.FirstOrDefault(a => a.Name == "Library"));
        }
示例#9
0
        public PlayerViewModel(AudioPlayerHelper helper, ICollectionService service, RootViewModel root, SettingViewModel settingViewModel,
                               Helpers.CollectionCommandHelper commands, IAppSettingsHelper appSettingsHelper, NowPlayingViewModel _nowPlaying)
        {
            _helper            = helper;
            _service           = service;
            _root              = root;
            _commands          = commands;
            _appSettingsHelper = appSettingsHelper;
            SettingViewModel   = settingViewModel;
            NowPlaying         = _nowPlaying;


            Add();
        }
        public void When_media_is_opened_should_forward_to_previous_media_position()
        {
            var eventAgg = new Mock <IEventAggregator>();
            var vm       = new NowPlayingViewModel(eventAgg.Object, new Mock <IMediaItemPersister>().Object);

            var media = new MediaItem();

            media.MediaPosition = 100;
            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(0, vm.SliderPosition);

            vm.MediaOpened();
            Assert.AreEqual(100, vm.SliderPosition);
        }
        public void Given_item_playing_when_item_is_deleted_should_stop_playing()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var mediaItemPersister = new Mock<IMediaItemPersister>();
            var vm = new NowPlayingViewModel(eventAgg.Object, mediaItemPersister.Object);

            var media1 = new MediaItem();
            media1.IsDeleted = false;

            vm.Handle(new PlayRequestMessage(media1));

            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);

            media1.IsDeleted = true;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            Assert.AreEqual("(Nothing)", vm.CurrentlyPlaying);
        }
        public void When_playing_then_playpause_should_be_pause_otherwise_should_be_play()
        {
            var eventAgg = new Mock <IEventAggregator>();
            var media    = new Mock <MediaItem>();
            var vm       = new NowPlayingViewModel(eventAgg.Object, new Mock <IMediaItemPersister>().Object);

            vm.Handle(new PlayRequestMessage(media.Object));

            vm.MediaPlayerState = PlayerState.Stopped;
            Assert.AreEqual("Play", vm.PlayPauseText);

            vm.MediaPlayerState = PlayerState.Paused;
            Assert.AreEqual("Play", vm.PlayPauseText);

            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual("Pause", vm.PlayPauseText);
        }
        public void When_requesting_to_play_currently_playing_media_should_just_resume_playing()
        {
            var eventAgg = new Mock <IEventAggregator>();
            var vm       = new NowPlayingViewModel(eventAgg.Object, new Mock <IMediaItemPersister>().Object);

            var media = new MediaItem();

            media.MediaPosition = 100;
            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(0, vm.SliderPosition);
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);

            vm.SliderPosition = 10;

            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(10, vm.SliderPosition);
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
        }
        public void Given_a_new_item_to_play_should_persist_the_previously_playing_item()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var mediaItemPersister = new Mock<IMediaItemPersister>();
            var vm = new NowPlayingViewModel(eventAgg.Object, mediaItemPersister.Object);

            var media1 = new MediaItem();
            vm.Handle(new PlayRequestMessage(media1));

            var media2 = new MediaItem();
            vm.Handle(new PlayRequestMessage(media2));

            mediaItemPersister.Verify(p => p.Save(media1));

            vm.Handle(new PlayRequestMessage(media1));

            mediaItemPersister.Verify(p => p.Save(media2));
        }
        public void Given_item_playing_when_item_is_deleted_should_stop_playing()
        {
            var eventAgg           = new Mock <IEventAggregator>();
            var mediaItemPersister = new Mock <IMediaItemPersister>();
            var vm = new NowPlayingViewModel(eventAgg.Object, mediaItemPersister.Object);

            var media1 = new MediaItem();

            media1.IsDeleted = false;

            vm.Handle(new PlayRequestMessage(media1));

            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);

            media1.IsDeleted = true;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            Assert.AreEqual("(Nothing)", vm.CurrentlyPlaying);
        }
        public void Given_a_play_request_message_should_stop_currently_playing_item_and_start_new_media()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var media = new Mock<MediaItem>();
            var dummyStream = new MemoryStream();
            media.Setup(x => x.Name).Returns("Fake Media Item");
            media.Setup(x => x.DataStream).Returns(() => dummyStream);
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock<IMediaItemPersister>().Object);

            var capturedEvents = new List<string>();
            vm.PropertyChanged += (s, e) => capturedEvents.Add(e.PropertyName);
            vm.Handle(new PlayRequestMessage(media.Object));

            var playStateChanges = capturedEvents.Where(x => x == "MediaPlayerState");
            Assert.AreEqual(1, playStateChanges.Count());
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
            Assert.AreSame(dummyStream, vm.MediaStream);
            Assert.AreEqual("Fake Media Item", vm.CurrentlyPlaying);
        }
        public void Given_a_new_item_to_play_should_persist_the_previously_playing_item()
        {
            var eventAgg           = new Mock <IEventAggregator>();
            var mediaItemPersister = new Mock <IMediaItemPersister>();
            var vm = new NowPlayingViewModel(eventAgg.Object, mediaItemPersister.Object);

            var media1 = new MediaItem();

            vm.Handle(new PlayRequestMessage(media1));

            var media2 = new MediaItem();

            vm.Handle(new PlayRequestMessage(media2));

            mediaItemPersister.Verify(p => p.Save(media1));

            vm.Handle(new PlayRequestMessage(media1));

            mediaItemPersister.Verify(p => p.Save(media2));
        }
示例#18
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (DataContext == null)
            {
                DataContext         = new NowPlayingViewModel(Dispatcher, LrcPresenter);
                LrcPresenter.Player = PlaybackControl.Instance.Player;
            }
            Application.Current.EnteredBackground += OnEnteredBackground;
            Application.Current.LeavingBackground += OnLeavingBackground;
            _vm.RegisterEvents();
            _navigationHelper.OnNavigatedTo(e);
            _vm.NextItems = new NextTrackSubset(Dispatcher, 15);

            _timer = new DispatcherTimer {
                Interval = TimeSpan.FromSeconds(0.5)
            };
            _timer.Tick += TimerOnTick;
            PlaybackControl.Instance.Player.CurrentStateChanged += OnPlaybackStateChanged;
            CheckPlayStatus();

            base.OnNavigatedTo(e);
        }
        public void Given_a_play_request_message_should_stop_currently_playing_item_and_start_new_media()
        {
            var eventAgg    = new Mock <IEventAggregator>();
            var media       = new Mock <MediaItem>();
            var dummyStream = new MemoryStream();

            media.Setup(x => x.Name).Returns("Fake Media Item");
            media.Setup(x => x.DataStream).Returns(() => dummyStream);
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock <IMediaItemPersister>().Object);

            var capturedEvents = new List <string>();

            vm.PropertyChanged += (s, e) => capturedEvents.Add(e.PropertyName);
            vm.Handle(new PlayRequestMessage(media.Object));

            var playStateChanges = capturedEvents.Where(x => x == "MediaPlayerState");

            Assert.AreEqual(1, playStateChanges.Count());
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
            Assert.AreSame(dummyStream, vm.MediaStream);
            Assert.AreEqual("Fake Media Item", vm.CurrentlyPlaying);
        }
        public void When_media_is_opened_should_forward_to_previous_media_position()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock<IMediaItemPersister>().Object);

            var media = new MediaItem();
            media.MediaPosition = 100;
            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(0, vm.SliderPosition);

            vm.MediaOpened();
            Assert.AreEqual(100, vm.SliderPosition);
        }
示例#21
0
        public NowPlayingPage()
        {
            InitializeComponent();

            BindingContext = new NowPlayingViewModel();
        }
示例#22
0
 public NowPlayingView(NowPlayingViewModel viewModel)
     : this()
 {
     this.DataContext = viewModel;
     this.spectrumAnalyzer.RegisterSoundPlayer(viewModel.Player);
 }
示例#23
0
 public NowPlayingView()
 {
     InitializeComponent();
     BindingContext = NowPlayingViewModel.GetInstance();
 }
        public void When_playing_then_playpause_should_be_pause_otherwise_should_be_play()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var media = new Mock<MediaItem>();
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock<IMediaItemPersister>().Object);
            vm.Handle(new PlayRequestMessage(media.Object));

            vm.MediaPlayerState = PlayerState.Stopped;
            Assert.AreEqual("Play", vm.PlayPauseText);

            vm.MediaPlayerState = PlayerState.Paused;
            Assert.AreEqual("Play", vm.PlayPauseText);

            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual("Pause", vm.PlayPauseText);
        }
        public void When_requesting_to_play_currently_playing_media_should_just_resume_playing()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock<IMediaItemPersister>().Object);

            var media = new MediaItem();
            media.MediaPosition = 100;
            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(0, vm.SliderPosition);
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);

            vm.SliderPosition = 10;

            vm.Handle(new PlayRequestMessage(media));
            Assert.AreEqual(10, vm.SliderPosition);
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
        }
示例#26
0
        void slider_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            NowPlayingViewModel viewModel = (NowPlayingViewModel)DataContext;

            viewModel.sliderpressed = true;
        }
        public void When_no_item_playing_then_should_not_change_play_state()
        {
            var eventAgg = new Mock<IEventAggregator>();
            var vm = new NowPlayingViewModel(eventAgg.Object, new Mock<IMediaItemPersister>().Object);

            Assert.IsFalse(vm.CanPlayPause);
            Assert.IsFalse(vm.CanStop);

            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            vm.MediaPlayerState = PlayerState.Paused;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);
            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual(PlayerState.Stopped, vm.MediaPlayerState);

            // now, requesting an item to be played should allow the state change
            var media = new Mock<MediaItem>();
            vm.Handle(new PlayRequestMessage(media.Object));

            Assert.IsTrue(vm.CanPlayPause);
            Assert.IsTrue(vm.CanStop);
            vm.MediaPlayerState = PlayerState.Playing;
            Assert.AreEqual(PlayerState.Playing, vm.MediaPlayerState);
            Assert.AreEqual("Pause", vm.PlayPauseText);
        }
示例#28
0
 protected override void OnResume()
 {
     NowPlayingViewModel.GetInstance().AppOnResume();
 }