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
            };
        }
Beispiel #2
0
 public NotificationViewModel(
     LivestreamNotification livestreamNotification,
     IMonitorStreamsModel model)
 {
     LivestreamNotification = livestreamNotification ?? throw new ArgumentNullException(nameof(livestreamNotification));
     this.model             = model ?? throw new ArgumentNullException(nameof(model));
 }
Beispiel #3
0
        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;
        }
Beispiel #8
0
        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));
                    }
                }
            };
        }