public LivestreamListViewModel( IMonitorStreamsModel monitorStreamsModel, FilterModel filterModel, StreamLauncher streamLauncher, INavigationService navigationService) { if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (streamLauncher == null) { throw new ArgumentNullException(nameof(streamLauncher)); } if (navigationService == null) { throw new ArgumentNullException(nameof(navigationService)); } this.streamLauncher = streamLauncher; this.navigationService = navigationService; this.StreamsModel = monitorStreamsModel; FilterModel = filterModel; refreshTimer = new DispatcherTimer { Interval = Constants.RefreshPollingTime }; }
public NotificationViewModel( LivestreamNotification livestreamNotification, IMonitorStreamsModel model) { LivestreamNotification = livestreamNotification ?? throw new ArgumentNullException(nameof(livestreamNotification)); this.model = model ?? throw new ArgumentNullException(nameof(model)); }
public HeaderViewModel( IMonitorStreamsModel monitorStreamsModel, StreamLauncher streamLauncher, FilterModel filterModelModel, IApiClientFactory apiClientFactory, ApiClientsQualitiesViewModel apiClientsQualitiesViewModel, IWindowManager windowManager) { if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (streamLauncher == null) { throw new ArgumentNullException(nameof(streamLauncher)); } if (filterModelModel == null) { throw new ArgumentNullException(nameof(filterModelModel)); } if (apiClientFactory == null) { throw new ArgumentNullException(nameof(apiClientFactory)); } FilterModel = filterModelModel; MonitorStreamsModel = monitorStreamsModel; this.streamLauncher = streamLauncher; this.apiClientFactory = apiClientFactory; this.windowManager = windowManager; this.apiClientsQualitiesViewModel = apiClientsQualitiesViewModel ?? throw new ArgumentNullException(nameof(apiClientsQualitiesViewModel)); }
public HeaderViewModel( IMonitorStreamsModel monitorStreamsModel, StreamLauncher streamLauncher, FilterModel filterModelModel, IApiClientFactory apiClientFactory) { if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (streamLauncher == null) { throw new ArgumentNullException(nameof(streamLauncher)); } if (filterModelModel == null) { throw new ArgumentNullException(nameof(filterModelModel)); } if (apiClientFactory == null) { throw new ArgumentNullException(nameof(apiClientFactory)); } FilterModel = filterModelModel; MonitorStreamsModel = monitorStreamsModel; this.streamLauncher = streamLauncher; this.apiClientFactory = apiClientFactory; }
public ShellViewModel( SettingsViewModel settingsViewModel, MainViewModel mainViewModel, IEventAggregator eventAggregator, INavigationService navigationService, IMonitorStreamsModel monitorStreamsModel, ISettingsHandler settingsHandler, PopularLivestreamWatcher popularLivestreamWatcher) { Settings = settingsViewModel ?? throw new ArgumentNullException(nameof(settingsViewModel)); this.mainViewModel = mainViewModel ?? throw new ArgumentNullException(nameof(mainViewModel)); this.navigationService = navigationService ?? throw new ArgumentNullException(nameof(navigationService)); this.monitorStreamsModel = monitorStreamsModel ?? throw new ArgumentNullException(nameof(monitorStreamsModel)); this.settingsHandler = settingsHandler ?? throw new ArgumentNullException(nameof(settingsHandler)); this.popularLivestreamWatcher = popularLivestreamWatcher ?? throw new ArgumentNullException(nameof(popularLivestreamWatcher)); ActiveItem = mainViewModel; eventAggregator.Subscribe(this); Settings.ActivateWith(this); currentAppVersion = GetType().Assembly.GetName().Version; DisplayName = $"LIVESTREAM MONITOR V{currentAppVersion.Major}.{currentAppVersion.Minor}.{currentAppVersion.Build}"; #if DEBUG // helps to know that we're running the debug rather than release version of the exe DisplayName += " (DEBUG)"; #endif }
public EmulatorViewModel( IMonitorStreamsModel monitorStreamsModel) { if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } this.monitorStreamsModel = monitorStreamsModel; }
public VodListViewModel( StreamLauncher streamLauncher, IMonitorStreamsModel monitorStreamsModel, IApiClientFactory apiClientFactory) { this.streamLauncher = streamLauncher ?? throw new ArgumentNullException(nameof(streamLauncher)); this.monitorStreamsModel = monitorStreamsModel ?? throw new ArgumentNullException(nameof(monitorStreamsModel)); this.apiClientFactory = apiClientFactory ?? throw new ArgumentNullException(nameof(apiClientFactory)); ItemsPerPage = VOD_TILES_PER_PAGE; }
public TopStreamsViewModel( IMonitorStreamsModel monitorStreamsModel, ISettingsHandler settingsHandler, StreamLauncher streamLauncher, INavigationService navigationService, IApiClientFactory apiClientFactory) { if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (settingsHandler == null) { throw new ArgumentNullException(nameof(settingsHandler)); } if (streamLauncher == null) { throw new ArgumentNullException(nameof(streamLauncher)); } if (navigationService == null) { throw new ArgumentNullException(nameof(navigationService)); } if (apiClientFactory == null) { throw new ArgumentNullException(nameof(apiClientFactory)); } this.monitorStreamsModel = monitorStreamsModel; this.settingsHandler = settingsHandler; this.streamLauncher = streamLauncher; this.navigationService = navigationService; this.apiClientFactory = apiClientFactory; ItemsPerPage = STREAM_TILES_PER_PAGE; StreamQualities.AddRange(Enum.GetNames(typeof(StreamQuality))); PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(Page)) { NotifyOfPropertyChange(() => CanPrevious); } }; }
public NotificationHandler( IWindowManager windowManager, IMonitorStreamsModel monitorStreamsModel, ISettingsHandler settingsHandler, StreamLauncher streamLauncher) { if (windowManager == null) { throw new ArgumentNullException(nameof(windowManager)); } if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (settingsHandler == null) { throw new ArgumentNullException(nameof(settingsHandler)); } if (streamLauncher == null) { throw new ArgumentNullException(nameof(streamLauncher)); } this.windowManager = windowManager; this.monitorStreamsModel = monitorStreamsModel; this.settingsHandler = settingsHandler; this.streamLauncher = streamLauncher; monitorStreamsModel.LivestreamsRefreshComplete += MonitorStreamsModelOnLivestreamsRefreshComplete; if (monitorStreamsModel.Livestreams != null) { foreach (var livestream in monitorStreamsModel.Livestreams) { HookLivestreamChangeEvents(livestream); } monitorStreamsModel.Livestreams.CollectionChanged += LivestreamsOnCollectionChanged; } }
public PopularLivestreamWatcher( ISettingsHandler settingsHandler, INotificationHandler notificationHandler, INavigationService navigationService, IMonitorStreamsModel monitorStreamsModel, IApiClientFactory apiClientFactory) { if (settingsHandler == null) { throw new ArgumentNullException(nameof(settingsHandler)); } if (notificationHandler == null) { throw new ArgumentNullException(nameof(notificationHandler)); } if (navigationService == null) { throw new ArgumentNullException(nameof(navigationService)); } if (monitorStreamsModel == null) { throw new ArgumentNullException(nameof(monitorStreamsModel)); } if (apiClientFactory == null) { throw new ArgumentNullException(nameof(apiClientFactory)); } this.settingsHandler = settingsHandler; this.notificationHandler = notificationHandler; this.apiClientFactory = apiClientFactory; clickAction = (model, notification) => { var livestream = model.Livestreams.FirstOrDefault(x => Equals(x, notification.LivestreamModel)); if (livestream != null) { model.SelectedLivestream = livestream; } else { navigationService.NavigateTo <TopStreamsViewModel>(viewModel => viewModel.SelectedApiClient = notification.LivestreamModel.ApiClient); } }; settingsHandler.Settings.PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(Settings.MinimumEventViewers)) { MinimumEventViewers = settingsHandler.Settings.MinimumEventViewers; if (MinimumEventViewers == 0) { watching = false; } else if (stoppedWatching) { StartWatching(); } } else if (args.PropertyName == nameof(Settings.DisableNotifications)) { if (!settingsHandler.Settings.DisableNotifications) { // clear the existing cache so the next poll can re-add notifications notifiedEvents.ToList().ForEach(x => notifiedEvents.Remove(x.Key)); } } }; }