Exemple #1
0
 public QueueAddItemCommand(
     HohoemaPlaylist hohoemaPlaylist,
     PrimaryViewPlayerManager primaryViewPlayerManager,
     ScondaryViewPlayerManager scondaryViewPlayerManager
     )
 {
     _hohoemaPlaylist           = hohoemaPlaylist;
     _primaryViewPlayerManager  = primaryViewPlayerManager;
     _scondaryViewPlayerManager = scondaryViewPlayerManager;
 }
        public VideoPlayRequestBridgeToPlayer(
            ScondaryViewPlayerManager playerViewManager,
            PrimaryViewPlayerManager primaryViewPlayerManager,
            IEventAggregator eventAggregator,
            IScheduler scheduler
            )
        {
            _secondaryPlayerManager   = playerViewManager;
            _primaryViewPlayerManager = primaryViewPlayerManager;
            _eventAggregator          = eventAggregator;
            _scheduler = scheduler;

            DisplayMode = ReadDisplayMode();

            _eventAggregator.GetEvent <Services.Player.PlayerPlayVideoRequest>()
            .Subscribe(async e =>
            {
                var pageName   = nameof(Views.VideoPlayerPage);
                var parameters = new NavigationParameters("id=" + e.VideoId);

                await PlayWithCurrentView(DisplayMode, pageName, parameters);
            });

            _eventAggregator.GetEvent <Services.Player.PlayerPlayLiveRequest>()
            .Subscribe(async e =>
            {
                var pageName   = nameof(Views.LivePlayerPage);
                var parameters = new NavigationParameters("id=" + e.LiveId);

                await PlayWithCurrentView(DisplayMode, pageName, parameters);
            });


            _eventAggregator.GetEvent <ChangePlayerDisplayViewRequestEvent>()
            .Subscribe(async() =>
            {
                var mode = DisplayMode == PlayerDisplayView.PrimaryView ? PlayerDisplayView.SecondaryView : PlayerDisplayView.PrimaryView;
                if (_lastNavigatedPageName != null && _lastNavigatedParameters != null)
                {
                    await PlayWithCurrentView(mode, _lastNavigatedPageName, _lastNavigatedParameters);
                }

                DisplayMode = mode;
                SaveDisplayMode();
            }
                       , ThreadOption.UIThread, true);

            _dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher;
        }
        public VideoCacheResumingObserver(
            IScheduler scheduler,
            NiconicoSession niconicoSession,
            ScondaryViewPlayerManager playerViewManager,
            VideoCacheManager videoCacheManager
            )
        {
            _scheduler         = scheduler;
            _niconicoSession   = niconicoSession;
            _playerViewManager = playerViewManager;
            _videoCacheManager = videoCacheManager;

            // 一般会員は再生とキャッシュDLを1ラインしか許容していないため
            // 再生終了時にキャッシュダウンロードの再開を行う必要がある
            // PlayerViewManager.NowPlaying はSecondaryViewでの再生時にFalseを示してしまうため
            // IsPlayerShowWithSecondaryViewを使ってセカンダリビューでの再生中を検出している
            //new[]
            //{
            //    // PlayerViewManager.ObserveProperty(x => x.NowPlaying).Select(x => !x),
            //    _playerViewManager.ObserveProperty(x => x.IsPlayerShowWithPrimaryView).Select(x => !x),
            //    _playerViewManager.ObserveProperty(x => x.IsPlayerShowWithSecondaryView).Select(x => !x),
            //    _niconicoSession.ObserveProperty(x => x.IsPremiumAccount).Select(x => !x)
            //}
            //.CombineLatestValuesAreAllTrue()
            //.Throttle(TimeSpan.FromSeconds(1))
            //.Subscribe(nowResumingCacheDL =>
            //{
            //    _scheduler.Schedule(() =>
            //    {
            //        if (nowResumingCacheDL)
            //        {
            //            _ = _videoCacheManager.ResumeCacheDownload();

            //            // TODO: キャッシュDL再開した場合の通知
            //        }
            //    });
            //})
            //.AddTo(_disposables);
        }
 public ShowPrimaryViewCommand(ScondaryViewPlayerManager scondaryViewPlayerManager)
 {
     _scondaryViewPlayerManager = scondaryViewPlayerManager;
 }