예제 #1
0
        public CoreViewModel(
            SettingsService settingsService,
            GammaService gammaService,
            HotKeyService hotKeyService,
            ExternalApplicationService externalApplicationService)
        {
            _settingsService            = settingsService;
            _gammaService               = gammaService;
            _hotKeyService              = hotKeyService;
            _externalApplicationService = externalApplicationService;

            _updateConfigurationTimer = Timer.Create(TimeSpan.FromMilliseconds(50), UpdateConfiguration);
            _updateInstantTimer       = Timer.Create(TimeSpan.FromMilliseconds(50), UpdateInstant);
            _updateIsPausedTimer      = Timer.Create(TimeSpan.FromSeconds(1), UpdateIsPaused);

            // Cancel 'disable temporarily' when switching to enabled
            this.Bind(o => o.IsEnabled, (sender, args) =>
            {
                if (IsEnabled)
                {
                    _enableAfterDelayRegistration?.Dispose();
                }
            });

            // Handle settings changes
            _settingsService.SettingsSaved += (sender, args) =>
            {
                Refresh();
                RegisterHotKeys();
            };
        }
예제 #2
0
        public RootViewModel(IViewModelFactory viewModelFactory, DialogManager dialogManager,
                             SettingsService settingsService, UpdateService updateService,
                             GammaService gammaService, HotKeyService hotKeyService,
                             RegistryService registryService, ExternalApplicationService externalApplicationService,
                             SystemEventService systemEventService)
        {
            _viewModelFactory           = viewModelFactory;
            _dialogManager              = dialogManager;
            _settingsService            = settingsService;
            _updateService              = updateService;
            _gammaService               = gammaService;
            _hotKeyService              = hotKeyService;
            _registryService            = registryService;
            _externalApplicationService = externalApplicationService;
            _systemEventService         = systemEventService;

            // Title
            DisplayName = $"{App.Name} v{App.VersionString}";

            // Cancel 'disable temporarily' when switched on
            this.Bind(o => o.IsEnabled, (sender, args) =>
            {
                if (IsEnabled)
                {
                    _enableAfterDelayTimer.Stop();
                }
            });

            // Initialize timers
            _updateConfigurationTimer = new AutoResetTimer(UpdateConfiguration);
            _updateInstantTimer       = new AutoResetTimer(UpdateInstant);
            _updateIsPausedTimer      = new AutoResetTimer(UpdateIsPaused);
            _checkForUpdatesTimer     = new AutoResetTimer(async() => await _updateService.CheckPrepareUpdateAsync());
            _pollingTimer             = new AutoResetTimer(PollGamma);
            _enableAfterDelayTimer    = new ManualResetTimer(Enable);

            // Reset gamma when power settings change
            _systemEventService.DisplayStateChanged += (sender, args) => InvalidateGamma();
            SystemEvents.DisplaySettingsChanging    += (sender, args) => InvalidateGamma();
            SystemEvents.DisplaySettingsChanged     += (sender, args) => InvalidateGamma();
        }
예제 #3
0
        public CoreViewModel(
            SettingsService settingsService,
            GammaService gammaService,
            HotKeyService hotKeyService,
            ExternalApplicationService externalApplicationService)
        {
            _settingsService            = settingsService;
            _gammaService               = gammaService;
            _hotKeyService              = hotKeyService;
            _externalApplicationService = externalApplicationService;

            _updateConfigurationTimer = new AutoResetTimer(UpdateConfiguration);
            _updateInstantTimer       = new AutoResetTimer(UpdateInstant);
            _updateIsPausedTimer      = new AutoResetTimer(UpdateIsPaused);
            _pollingTimer             = new AutoResetTimer(PollGamma);
            _enableAfterDelayTimer    = new ManualResetTimer(Enable);

            // Cancel 'disable temporarily' when switched to enabled
            this.Bind(o => o.IsEnabled, (sender, args) =>
            {
                if (IsEnabled)
                {
                    _enableAfterDelayTimer.Stop();
                }
            });

            // Handle settings changes
            _settingsService.SettingsSaved += (sender, args) =>
            {
                _isStale = true;
                Refresh();
                RegisterHotKeys();
            };

            // Handle display settings changes
            _systemEvents.DisplaySettingsChanged += (sender, args) => _isStale = true;
            _systemEvents.DisplayStateChanged    += (sender, args) => _isStale = true;
        }