コード例 #1
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();
        }
コード例 #2
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;
        }
コード例 #3
0
        public RootViewModel(IEventAggregator eventAggregator, IViewModelFactory viewModelFactory,
                             SettingsService settingsService, UpdateService updateService,
                             CalculationService calculationService, LocationService locationService,
                             WinApiService winApiService)
        {
            _settingsService    = settingsService;
            _calculationService = calculationService;
            _winApiService      = winApiService;

            // Handle messages
            eventAggregator.Subscribe(this);

            // Initialize view models
            GeneralSettings  = viewModelFactory.CreateGeneralSettingsViewModel();
            LocationSettings = viewModelFactory.CreateLocationSettingsViewModel();
            AdvancedSettings = viewModelFactory.CreateAdvancedSettingsViewModel();

            // When IsEnabled switches to 'true' - cancel 'disable temporarily'
            this.Bind(o => o.IsEnabled, (sender, args) =>
            {
                if (IsEnabled)
                {
                    _enableAfterDelayTimer.Stop();
                }
            });

            // Initialize timers
            _updateTimer = new AutoResetTimer(() =>
            {
                UpdateIsPaused();
                UpdateInstant();
                UpdateGamma();
            });

            _settingsAutoSaveTimer = new AutoResetTimer(() => _settingsService.SaveIfNeeded());

            _internetSyncTimer = new AutoResetTimer(async() =>
            {
                if (!_settingsService.IsInternetSyncEnabled)
                {
                    return;
                }

                // TODO: rework later
                var location = await locationService.GetLocationAsync();

                if (_settingsService.IsInternetSyncEnabled)
                {
                    _settingsService.Location = location;

                    var date = DateTimeOffset.Now;
                    _settingsService.SunriseTime = _calculationService.CalculateSunrise(location, date).TimeOfDay;
                    _settingsService.SunsetTime  = _calculationService.CalculateSunset(location, date).TimeOfDay;
                }
            });

            _checkForUpdatesTimer = new AutoResetTimer(async() =>
            {
                IsUpdateAvailable = await updateService.CheckForUpdatesAsync();
            });

            _enableAfterDelayTimer = new ManualResetTimer(Enable);
        }