using System; using System.Windows.Forms; using Trigger.Classes.Power; using Systemm = System; namespace Trigger.Status { /// /// Provides methods to examine the status of the power supply /// static class Power { #region Properties /// /// Gets the current system power status /// public static PowerLineStatus PowerLineStatus { get { return SystemInformation.PowerStatus.PowerLineStatus; } } /// /// Gets the current battery charge status. /// public static BatteryChargeStatus BatteryChargeStatus { get { return SystemInformation.PowerStatus.BatteryChargeStatus; } } /// /// Checks whether a battery is available on the system /// May be null if the is unknown /// public static bool? BatteryAvailable { get { BatteryChargeStatus bcs = BatteryChargeStatus; if (bcs == Systemm.Windows.Forms.BatteryChargeStatus.Unknown) return null; return bcs != Systemm.Windows.Forms.BatteryChargeStatus.NoSystemBattery; } } /// /// Gets the reported full charge lifetime of the primary battery power source /// public static TimeSpan BatteryFullLifetime { get { int fullLifeTime = SystemInformation.PowerStatus.BatteryFullLifetime; int lifeRemaining = SystemInformation.PowerStatus.BatteryLifeRemaining; if (fullLifeTime == -1 && lifeRemaining != -1) return new TimeSpan(0, 0, (int)(lifeRemaining / SystemInformation.PowerStatus.BatteryLifePercent)); else return new TimeSpan(0, 0, fullLifeTime); } } /// /// Gets the approximate amount of full battery charge remaining /// public static byte BatteryLifePercent { get { return (byte)(SystemInformation.PowerStatus.BatteryLifePercent * 100); } } /// /// Gets the approximate of battery time remaining. /// public static TimeSpan BatteryLifeRemaining { get { int life = SystemInformation.PowerStatus.BatteryLifeRemaining; return new TimeSpan(0, 0, life); } } public static PowerScheme ActivePowerScheme { get { return PowerScheme.Active; } } #endregion #region Methods /// /// Returns the current Power status /// /// public static TreeNode GetStatus() { TreeNode tnMain = new TreeNode("Power"); tnMain.Nodes.Add("Active power scheme: " + ActivePowerScheme.Name + " (" + ActivePowerScheme.Guid.ToString() + ")"); tnMain.Nodes.Add("Power Line Status: " + PowerLineStatus.ToString()); tnMain.Nodes.Add("Battery charge status: " + BatteryChargeStatus.ToString()); tnMain.Nodes.Add("Battery available: " + BatteryAvailable.ToString()); tnMain.Nodes.Add("Battery full life time: " + BatteryFullLifetime.ToString()); tnMain.Nodes.Add("Battery remaining life time: " + BatteryLifeRemaining.ToString()); tnMain.Nodes.Add("Battery charge percent: " + BatteryLifePercent + "%"); return tnMain; } #endregion } }