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
}
}