/// <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; }
/// <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; } }
/// <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; } }