// Windows10のメディアコントロールとHohoemaのプレイリスト機能を統合してサポート // 外部からの次送り、前送り // プレイリストリセットなどに対応する // // 外部からの操作はイベントに切り出す // 画面の遷移自体はPageManagerに任せることにする // PageManagerに動画情報を渡すまでをやる // TODO: 「あとで見る」プレイリストをローミングフォルダへ書き出す public HohoemaPlaylist( IScheduler scheduler, NiconicoSession niconicoSession, VideoCacheManager videoCacheManager, PlaylistSettings playlistSettings, PlayerViewManager viewMan ) { Scheduler = scheduler; NiconicoSession = niconicoSession; VideoCacheManager = videoCacheManager; PlaylistSettings = playlistSettings; PlayerViewManager = viewMan; Player = new PlaylistPlayer(this, playlistSettings); MakeDefaultPlaylist(); Player.PlayRequested += Player_PlayRequested; // 一般会員は再生とキャッシュDLを1ラインしか許容していないため // 再生終了時にキャッシュダウンロードの再開を行う必要がある // PlayerViewManager.NowPlaying はSecondaryViewでの再生時にFalseを示してしまうため // IsPlayerShowWithSecondaryViewを使ってセカンダリビューでの再生中を検出している _resumingObserver = 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再開した場合の通知 } }); }); }