Trigger4Win/Trigger/Status/PowerStatus.cs
2015-04-10 00:09:58 +00:00

120 lines
3.3 KiB
C#

using System;
using System.Windows.Forms;
using Trigger.Classes.Power;
using Systemm = System;
namespace Trigger.Status
{
/// <summary>
/// <para>Provides methods to examine the status of the power supply</para>
/// </summary>
static class Power
{
#region Properties
/// <summary>
/// <para>Gets the current system power status</para>
/// </summary>
public static PowerLineStatus PowerLineStatus
{
get
{
return SystemInformation.PowerStatus.PowerLineStatus;
}
}
/// <summary>
/// <para>Gets the current battery charge status.</para>
/// </summary>
public static BatteryChargeStatus BatteryChargeStatus
{
get
{
return SystemInformation.PowerStatus.BatteryChargeStatus;
}
}
/// <summary>
/// <para>Checks whether a battery is available on the system</para>
/// <para>May be null if the <see cref="Systemm.Windows.Forms.BatteryChargeStatus"/> is unknown</para>
/// </summary>
public static bool? BatteryAvailable
{
get
{
BatteryChargeStatus bcs = BatteryChargeStatus;
if (bcs == Systemm.Windows.Forms.BatteryChargeStatus.Unknown)
return null;
return bcs != Systemm.Windows.Forms.BatteryChargeStatus.NoSystemBattery;
}
}
/// <summary>
/// <para>Gets the reported full charge lifetime of the primary battery power source</para>
/// </summary>
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);
}
}
/// <summary>
/// <para>Gets the approximate amount of full battery charge remaining</para>
/// </summary>
public static byte BatteryLifePercent
{
get
{
return (byte)(SystemInformation.PowerStatus.BatteryLifePercent * 100);
}
}
/// <summary>
/// <para>Gets the approximate <see cref="TimeSpan"/> of battery time remaining.</para>
/// </summary>
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
/// <summary>
/// <para>Returns the current Power status</para>
/// </summary>
/// <returns></returns>
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
}
}