コード例 #1
0
        public static bool HasBattery()
        {
            Win32.PowerState state = Win32.PowerState.GetPowerState();

            if (state == null || state.BatteryFlag == Win32.BatteryFlag.NoSystemBattery)
            {
                return(false);
            }

            return(true);
        }
コード例 #2
0
ファイル: SystemService.cs プロジェクト: zoyag/HandBrake
        private void PowerCheck()
        {
            Win32.PowerState state = Win32.PowerState.GetPowerState();

            if (state == null || state.BatteryFlag == Win32.BatteryFlag.NoSystemBattery || state.BatteryFlag == Win32.BatteryFlag.Unknown)
            {
                return; // Only run if we have a battery.
            }

            if (state.ACLineStatus == Win32.ACLineStatus.Offline && state.BatteryFlag == Win32.BatteryFlag.Low && !this.lowStateHit)
            {
                if (this.encodeService.IsEncoding && !this.encodeService.IsPasued)
                {
                    this.lowPowerPause = true;
                    this.encodeService.Pause();
                }

                Win32.AllowSleep();

                this.ServiceLogMessage(string.Format(Resources.SystemService_LowBatteryLog, state.BatteryLifePercent));
                this.lowStateHit = true;
            }

            if (state.ACLineStatus == Win32.ACLineStatus.Offline && state.BatteryFlag == Win32.BatteryFlag.Critical && !this.criticalStateHit)
            {
                if (this.encodeService.IsEncoding && !this.encodeService.IsPasued)
                {
                    this.lowPowerPause = true;
                    this.encodeService.Pause(); // In case we missed the low state!
                }

                Win32.AllowSleep();

                this.ServiceLogMessage(string.Format(Resources.SystemService_CriticalBattery, state.BatteryLifePercent));
                this.criticalStateHit = true;
            }

            // Reset the flags when we start charging.
            if (state.ACLineStatus == Win32.ACLineStatus.Online && state.BatteryFlag >= Win32.BatteryFlag.Low)
            {
                if (this.lowPowerPause && this.encodeService.IsPasued)
                {
                    this.encodeService.Resume();
                    this.ServiceLogMessage(string.Format(Resources.SystemService_ACMains, state.BatteryLifePercent));
                }

                this.lowPowerPause    = false;
                this.criticalStateHit = false;
                this.lowStateHit      = false;
            }
        }
コード例 #3
0
ファイル: SystemService.cs プロジェクト: yjsyyyjszf/HandBrake
        private void PowerCheck()
        {
            if (!this.userSettingService.GetUserSetting <bool>(UserSettingConstants.PauseEncodingOnLowBattery))
            {
                return;
            }

            Win32.PowerState state = Win32.PowerState.GetPowerState();

            if (state == null || state.BatteryFlag == Win32.BatteryFlag.NoSystemBattery || state.BatteryFlag == Win32.BatteryFlag.Unknown)
            {
                return; // Only run if we have a battery.
            }

            int lowBatteryLevel = this.userSettingService.GetUserSetting <int>(UserSettingConstants.LowBatteryLevel);

            if (state.ACLineStatus == Win32.ACLineStatus.Offline && state.BatteryLifePercent <= lowBatteryLevel && !this.lowStateHit)
            {
                if (this.encodeService.IsEncoding && !this.encodeService.IsPasued)
                {
                    this.lowPowerPause = true;
                    this.queueService.Pause();
                }

                Win32.AllowSleep();

                this.ServiceLogMessage(string.Format(Resources.SystemService_LowBatteryLog, state.BatteryLifePercent));
                this.lowStateHit = true;
            }

            // Reset the flags when we start charging.
            if (state.ACLineStatus == Win32.ACLineStatus.Online)
            {
                if (this.lowPowerPause && this.encodeService.IsPasued)
                {
                    this.queueService.Start(this.userSettingService.GetUserSetting <bool>(UserSettingConstants.ClearCompletedFromQueue));
                    this.ServiceLogMessage(string.Format(Resources.SystemService_ACMains, state.BatteryLifePercent));
                }

                this.lowPowerPause    = false;
                this.criticalStateHit = false;
                this.lowStateHit      = false;
            }
        }