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.");
        }
示例#2
0
        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;
            }
        }
示例#3
0
        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;
                }
            };
        }