Example #1
0
 /// <summary>
 /// Initializes a new instance of the MediaPlayerViewModel class.
 /// </summary>
 /// <param name="subtitlesService"></param>
 /// <param name="applicationService">Application service</param>
 /// <param name="mediaPath">Media path</param>
 /// <param name="mediaName">Media name</param>
 /// <param name="type">Media type</param>
 /// <param name="mediaStoppedAction">Media action to execute when media has been stopped</param>
 /// <param name="mediaEndedAction">Media action to execute when media has ended</param>
 /// <param name="bufferProgress">The buffer progress</param>
 /// <param name="bandwidthRate">THe bandwidth rate</param>
 /// <param name="subtitleFilePath">Subtitle file path</param>
 /// <param name="subtitles">Subtitles</param>
 public MediaPlayerViewModel(ISubtitlesService subtitlesService, IApplicationService applicationService,
                             string mediaPath,
                             string mediaName, MediaType type, Action mediaStoppedAction,
                             Action mediaEndedAction, Progress <double> bufferProgress = null,
                             Progress <BandwidthRate> bandwidthRate = null, string subtitleFilePath = null,
                             IEnumerable <Subtitle> subtitles       = null)
 {
     Logger.Info(
         $"Loading media : {mediaPath}.");
     RegisterCommands();
     _chromecastService  = new ChromecastService();
     _subtitlesService   = subtitlesService;
     _applicationService = applicationService;
     MediaPath           = mediaPath;
     MediaName           = mediaName;
     MediaType           = type;
     CanSeek             = true;
     _mediaStoppedAction = mediaStoppedAction;
     _mediaEndedAction   = mediaEndedAction;
     SubtitleFilePath    = subtitleFilePath;
     BufferProgress      = bufferProgress;
     BandwidthRate       = bandwidthRate;
     ShowSubtitleButton  = MediaType != MediaType.Trailer;
     _subtitles          = subtitles;
     // Prevent windows from sleeping
     _applicationService.EnableConstantDisplayAndPower(true);
     _castPlayerTimer = new DispatcherTimer {
         Interval = TimeSpan.FromSeconds(1)
     };
     _castPlayerTimer.Tick += OnCastPlayerTimerChanged;
 }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the MediaPlayerViewModel class.
        /// </summary>
        /// <param name="chromecastService">The Chromecast service</param>
        /// <param name="subtitlesService"></param>
        /// <param name="cacheService">Caching service</param>
        /// <param name="mediaPath">Media path</param>
        /// <param name="mediaName">Media name</param>
        /// <param name="type">Media type</param>
        /// <param name="mediaStoppedAction">Media action to execute when media has been stopped</param>
        /// <param name="mediaEndedAction">Media action to execute when media has ended</param>
        /// <param name="bufferProgress">The buffer progress</param>
        /// <param name="bandwidthRate">THe bandwidth rate</param>
        /// <param name="currentSubtitle">Subtitle</param>
        /// <param name="subtitles">Subtitles</param>
        public MediaPlayerViewModel(IChromecastService chromecastService, ISubtitlesService subtitlesService, ICacheService cacheService,
                                    string mediaPath,
                                    string mediaName, MediaType type, Action mediaStoppedAction,
                                    Action mediaEndedAction, Progress <double> bufferProgress = null,
                                    Progress <BandwidthRate> bandwidthRate = null, Subtitle currentSubtitle = null,
                                    IEnumerable <Subtitle> subtitles       = null)
        {
            Logger.Info(
                $"Loading media : {mediaPath}.");
            RegisterCommands();
            _chromecastService  = chromecastService;
            _subtitlesService   = subtitlesService;
            _cacheService       = cacheService;
            MediaPath           = mediaPath;
            MediaName           = mediaName;
            MediaType           = type;
            CanSeek             = true;
            _mediaStoppedAction = mediaStoppedAction;
            _mediaEndedAction   = mediaEndedAction;
            SubtitleFilePath    = currentSubtitle?.FilePath;
            BufferProgress      = bufferProgress;
            BandwidthRate       = bandwidthRate;
            ShowSubtitleButton  = MediaType != MediaType.Trailer;
            _subtitles          = subtitles;
            _castPlayerTimer    = new DispatcherTimer {
                Interval = TimeSpan.FromSeconds(1)
            };
            _castPlayerTimer.Tick += OnCastPlayerTimerChanged;

            if (currentSubtitle != null && currentSubtitle.Sub.SubtitleId != "none")
            {
                IsSubtitleChosen = true;
                CurrentSubtitle  = currentSubtitle.Sub;
            }
        }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the WindowViewModel class.
 /// </summary>
 /// <param name="applicationService">Instance of Application state</param>
 /// <param name="userService">Instance of movie history service</param>
 /// <param name="subtitlesService">Instance of subtitles service</param>
 /// <param name="chromecastService">Instance of Chromecast service</param>
 /// <param name="cacheService">Instance of cache service</param>
 /// <param name="manager">The notification manager</param>
 public WindowViewModel(IApplicationService applicationService, IUserService userService,
                        ISubtitlesService subtitlesService, IChromecastService chromecastService,
                        ICacheService cacheService, NotificationMessageManager manager)
 {
     _chromecastService  = chromecastService;
     _cacheService       = cacheService;
     _manager            = manager;
     _subtitlesService   = subtitlesService;
     _userService        = userService;
     _dialogCoordinator  = DialogCoordinator.Instance;
     _applicationService = applicationService;
     RegisterMessages();
     RegisterCommands();
     AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
 }
        public ChromecastDialogViewModel(CastMediaMessage message, IChromecastService chromecastService)
        {
            _chromecastService = chromecastService;
            _message           = message;
            Chromecasts        = new ObservableCollection <IReceiver>();
            CloseCommand       = new RelayCommand(() =>
            {
                OnCloseAction.Invoke();
            });

            CancelCommand = new RelayCommand(() =>
            {
                _message.CastCancellationTokenSource.Cancel();
                OnCloseAction.Invoke();
            });

            RefreshCommand = new RelayCommand(async() =>
            {
                await LoadChromecasts();
            });
        }
        /// <summary>
        /// Initializes a new instance of the MediaPlayerViewModel class.
        /// </summary>
        /// <param name="chromecastService">The Chromecast service</param>
        /// <param name="subtitlesService"></param>
        /// <param name="cacheService">Caching service</param>
        /// <param name="mediaPath">Media path</param>
        /// <param name="mediaName">Media name</param>
        /// <param name="type">Media type</param>
        /// <param name="mediaStoppedAction">Media action to execute when media has been stopped</param>
        /// <param name="mediaEndedAction">Media action to execute when media has ended</param>
        /// <param name="playingProgress">Media playing progress</param>
        /// <param name="bufferProgress">The buffer progress</param>
        /// <param name="pieceAvailability">The piece availability</param>
        /// <param name="bandwidthRate">THe bandwidth rate</param>
        /// <param name="currentSubtitle">Subtitle</param>
        /// <param name="subtitles">Subtitles</param>
        public MediaPlayerViewModel(IChromecastService chromecastService, ISubtitlesService subtitlesService,
                                    ICacheService cacheService,
                                    string mediaPath,
                                    string mediaName, MediaType type, Action mediaStoppedAction,
                                    Action mediaEndedAction, IProgress <double> playingProgress = null, Progress <double> bufferProgress = null,
                                    Progress <PieceAvailability> pieceAvailability = null,
                                    Progress <BandwidthRate> bandwidthRate         = null, Subtitle currentSubtitle = null,
                                    IEnumerable <Subtitle> subtitles = null)
        {
            Logger.Info(
                $"Loading media : {mediaPath}.");
            RegisterCommands();
            _chromecastService = chromecastService;
            _chromecastService.StatusChanged += OnCastMediaStatusChanged;
            _subtitlesService   = subtitlesService;
            _cacheService       = cacheService;
            MediaPath           = mediaPath;
            MediaName           = mediaName;
            MediaType           = type;
            PieceAvailability   = pieceAvailability;
            _mediaStoppedAction = mediaStoppedAction;
            _mediaEndedAction   = mediaEndedAction;
            SubtitleFilePath    = currentSubtitle?.FilePath;
            BufferProgress      = bufferProgress;
            BandwidthRate       = bandwidthRate;
            ShowSubtitleButton  = MediaType != MediaType.Trailer;
            _subtitles          = subtitles;
            _playingProgress    = playingProgress;

            if (currentSubtitle != null && currentSubtitle.Sub.SubtitleId != "none" &&
                !string.IsNullOrEmpty(currentSubtitle.FilePath))
            {
                IsSubtitleChosen = true;
                CurrentSubtitle  = currentSubtitle.Sub;
                SubtitleItems    = _subtitlesService.LoadCaptions(currentSubtitle.FilePath);
            }
        }
        /// <summary>
        /// Initializes a new instance of the MediaPlayerViewModel class.
        /// </summary>
        /// <param name="chromecastService">The Chromecast service</param>
        /// <param name="subtitlesService"></param>
        /// <param name="cacheService">Caching service</param>
        /// <param name="mediaPath">Media path</param>
        /// <param name="mediaName">Media name</param>
        /// <param name="type">Media type</param>
        /// <param name="mediaStoppedAction">Media action to execute when media has been stopped</param>
        /// <param name="mediaEndedAction">Media action to execute when media has ended</param>
        /// <param name="playingProgress">Media playing progress</param>
        /// <param name="bufferProgress">The buffer progress</param>
        /// <param name="bandwidthRate">THe bandwidth rate</param>
        /// <param name="currentSubtitle">Subtitle</param>
        /// <param name="subtitles">Subtitles</param>
        public MediaPlayerViewModel(IChromecastService chromecastService, ISubtitlesService subtitlesService,
                                    ICacheService cacheService,
                                    string mediaPath,
                                    string mediaName, MediaType type, Action mediaStoppedAction,
                                    Action mediaEndedAction, IProgress <double> playingProgress = null, Progress <double> bufferProgress = null,
                                    Progress <BandwidthRate> bandwidthRate = null, Subtitle currentSubtitle = null,
                                    IEnumerable <Subtitle> subtitles       = null)
        {
            Logger.Info(
                $"Loading media : {mediaPath}.");
            RegisterCommands();
            _chromecastService = chromecastService;
            _chromecastService.StatusChanged += OnCastMediaStatusChanged;
            _subtitlesService   = subtitlesService;
            _cacheService       = cacheService;
            MediaPath           = mediaPath;
            MediaName           = mediaName;
            MediaType           = type;
            _mediaStoppedAction = mediaStoppedAction;
            _mediaEndedAction   = mediaEndedAction;
            BufferProgress      = bufferProgress;
            BandwidthRate       = bandwidthRate;
            ShowSubtitleButton  = MediaType != MediaType.Trailer;
            Volume           = 1d;
            _playingProgress = playingProgress;
            _subtitles       = new ObservableCollection <Subtitle>();
            if (subtitles != null)
            {
                _subtitles = new ObservableCollection <Subtitle>(subtitles);
            }

            if (currentSubtitle != null && currentSubtitle.LanguageName != LocalizationProviderHelper.GetLocalizedValue <string>("NoneLabel") &&
                !string.IsNullOrEmpty(currentSubtitle.FilePath))
            {
                CurrentSubtitle = currentSubtitle;
            }
        }