public DesktopDuplicatorReader(IUserSettings userSettings, ISpotSet spotSet, SettingsViewModel settingsViewModel) { UserSettings = userSettings ?? throw new ArgumentNullException(nameof(userSettings)); SpotSet = spotSet ?? throw new ArgumentNullException(nameof(spotSet)); SettingsViewModel = settingsViewModel ?? throw new ArgumentNullException(nameof(settingsViewModel)); _retryPolicy = Policy.Handle <Exception>() .WaitAndRetryForever(ProvideDelayDuration); UserSettings.PropertyChanged += PropertyChanged; SettingsViewModel.PropertyChanged += PropertyChanged; RefreshCapturingState(); _log.Info($"DesktopDuplicatorReader created."); }
public SerialStream(IUserSettings userSettings, ISpotSet spotSet) { UserSettings = userSettings ?? throw new ArgumentNullException(nameof(userSettings)); SpotSet = spotSet ?? throw new ArgumentNullException(nameof(spotSet)); UserSettings.PropertyChanged += UserSettings_PropertyChanged; RefreshTransferState(); _log.Info($"SerialStream created."); if (!IsValid()) { UserSettings.TransferActive = false; UserSettings.ComPort = null; } }
public SettingsViewModel(IUserSettings userSettings, IList <ISelectableViewPart> selectableViewParts , ISpotSet spotSet, IContext context, ISerialStream serialStream) { if (selectableViewParts == null) { throw new ArgumentNullException(nameof(selectableViewParts)); } this.Settings = userSettings ?? throw new ArgumentNullException(nameof(userSettings)); this.spotSet = spotSet ?? throw new ArgumentNullException(nameof(spotSet)); Context = context ?? throw new ArgumentNullException(nameof(context)); this.serialStream = serialStream ?? throw new ArgumentNullException(nameof(serialStream)); SelectableViewParts = selectableViewParts.OrderBy(p => p.Order) .ToList(); #if DEBUG SelectedViewPart = SelectableViewParts.Last(); #else SelectedViewPart = SelectableViewParts.First(); #endif PossibleLedCountsVertical = Enumerable.Range(10, 190).ToList(); PossibleLedCountsHorizontal = Enumerable.Range(10, 290).ToList(); PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(SelectedViewPart): var name = SelectedViewPart?.ViewPartName ?? "nothing"; break; } }; Settings.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(Settings.SpotsX): RaisePropertyChanged(() => SpotsXMaximum); RaisePropertyChanged(() => LedCount); RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.SpotsY): RaisePropertyChanged(() => SpotsYMaximum); RaisePropertyChanged(() => LedCount); RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.UseLinearLighting): RaisePropertyChanged(() => UseNonLinearLighting); break; case nameof(Settings.OffsetLed): RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.Autostart): if (Settings.Autostart) { StartUpManager.AddApplicationToCurrentUserStartup(); } else { StartUpManager.RemoveApplicationFromCurrentUserStartup(); } break; case nameof(Settings.ComPort): RaisePropertyChanged(() => TransferCanBeStarted); RaisePropertyChanged(() => TransferCanNotBeStarted); break; } }; }
public SettingsViewModel(IUserSettings userSettings, IList <ISelectableViewPart> selectableViewParts , ISpotSet spotSet, IContext context, TelemetryClient tc, ISerialStream serialStream) { WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent"); watcher = new ManagementEventWatcher(query); watcher.EventArrived += (s, e) => RaisePropertyChanged(() => AvailableComPorts); // watcher.Query = query; watcher.Start(); // watcher.WaitForNextEvent(); if (selectableViewParts == null) { throw new ArgumentNullException(nameof(selectableViewParts)); } this.Settings = userSettings ?? throw new ArgumentNullException(nameof(userSettings)); this.spotSet = spotSet ?? throw new ArgumentNullException(nameof(spotSet)); Context = context ?? throw new ArgumentNullException(nameof(context)); this.serialStream = serialStream ?? throw new ArgumentNullException(nameof(serialStream)); SelectableViewParts = selectableViewParts.OrderBy(p => p.Order) .ToList(); #if DEBUG SelectedViewPart = SelectableViewParts.First(); #else SelectedViewPart = SelectableViewParts.First(); #endif PossibleLedCountsVertical = Enumerable.Range(10, 190).ToList(); PossibleLedCountsHorizontal = Enumerable.Range(10, 290).ToList(); PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(SelectedViewPart): var name = SelectedViewPart?.ViewPartName ?? "nothing"; tc.TrackPageView(name); break; } }; Settings.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(Settings.SpotsX): RaisePropertyChanged(() => SpotsXMaximum); RaisePropertyChanged(() => LedCount); RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.SpotsY): RaisePropertyChanged(() => SpotsYMaximum); RaisePropertyChanged(() => LedCount); RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.LedsPerSpot): RaisePropertyChanged(() => LedCount); RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.UseLinearLighting): RaisePropertyChanged(() => UseNonLinearLighting); break; case nameof(Settings.OffsetLed): RaisePropertyChanged(() => OffsetLedMaximum); break; case nameof(Settings.Autostart): if (Settings.Autostart) { StartUpManager.AddApplicationToCurrentUserStartup(); } else { StartUpManager.RemoveApplicationFromCurrentUserStartup(); } break; case nameof(Settings.ComPort): RaisePropertyChanged(() => TransferCanBeStarted); RaisePropertyChanged(() => TransferCanNotBeStarted); break; } }; }